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('(()'))