【每日任务】2022.11.17(栈)

本文介绍了MySQL中的字段拼接、截取等实用技巧,并通过具体案例展示了如何使用聚合函数进行分组和计算求和。此外,还深入探讨了Python中栈的实现及其在括号匹配问题中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MySQL部分

# 牛客SQL.81 字段拼接、截取
# 方法:字段截取【left、right、substring】、字段拼接【concat】、大小写转换【upper】
select 
    cust_id,cust_name,
    upper(concat(left(cust_contact,2),left(cust_city,3))) as user_login 
from Customers

# 牛客SQL.88 分组聚合
# 方法一:子查询
select 
order_num
from ( select order_num, sum(quantity) as sum_num 
                    from OrderItems group by order_num having sum_num >= 100
) a
order by order_num;
# 方法二:HAVING聚合
select 
order_num
from OrderItems
group by order_num 
having  sum(quantity) >= 100
order by order_num
# 方法三:窗口函数
select order_num
from (
select order_num,sum(quantity) 
    over (partition by order_num order by quantity ) as sum_1
    from OrderItems
) as tb1
where sum_1 >= 100
order by order_num;
# 方法四:临时表
with t1 as
(SELECT order_num,sum(quantity) as sum_items FROM OrderItems GROUP BY order_num)
select order_num from t1 where sum_items>=100 order by order_num

# 牛客SQL.89 计算求和
# 方法一:聚合函数HAVING
select order_num,SUM(item_price*quantity) as total_price FROM OrderItems GROUP BY order_num HAVING total_price>=1000
# 方法二:
with t1 as
(select order_num,sum(item_price*quantity) as total_price from OrderItems group by order_num )
select order_num,total_price from t1 where total_price>=1000

Python部分(栈的学习)

栈的理论

栈Stack,是一种线性结构,栈中数据的加入和移除都发生在同一端,处理数据的这一端叫栈顶,原理数据的这一端叫栈底
栈的特性后入先出,访问次序反转,LIFO
常见应用:浏览器历史记录、文档撤销操作

 

class Stack:
    def __init__:
        self.items = []
    
    def isEmpey(self):
        return self.items == []

    def push(self, item):
        self.items.append(item)

    def pop(self):
        return self.items.pop()

    def peek(self):
        return self.items[len(self.items)-1]

    def size(self):
        return len(self.items)

 栈的应用:简单括号匹配

 

def parChecker(symbolString):
    s = Stack()
    balanced = True
    index = 0
    while index < len(symbolString) and balanced:
        symbol = symbolString[index]
        if symbol == "(":
            s.push( symbol)
        else:
            if s.isEmpty() :
                balanced = False
            else:
                s.pop()
        index = index + 1

    if balanced and s.isEmpty():
        return True
    else:
        return False

print(parchecker('((()))'))
print(parchecker('(()'))

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Arvee

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值