一、看书总结:
1.拼接串:concat(a,b,c)
分组拼接串(排序):group_concat(a order by a/b asc/desc)
2.select显示内容可以直接运算
例如:select a,b,a*b as c from table
3.多条件判断
case when… then…
when… then…
when… then…
else… end
4. 当用select*from 表名 group by ‘字段名1’ 将选出来的内容将按照字段1分组,其他列不尽相同,会以最前面的内容显示
5. WITH rollup中对求列的总数是OK的,但是求列的平均数有偏差,这里场景使用不是恰当
6. 分组查询,且枚举对应显示
selectsid,group_concat(cid order by cid asc) as cid,
group_concat(scoreorder by cid asc) as score
from sc group bysid;
二、leetcode 总结:
596.
(1)COUNT(student) 不能直接在 WHERE 子句中使用,这里将其重命名为 num
(2)使用 DISTINCT 防止在同一门课中学生被重复计算
196.
delete 有与 select 相似的用法
177.第N高的收入
(1)limit offset 后面只能取正整数
(2)
begin
set数值:条件;
return
(3)group by和order by可以连用
其他总结:
*where和having的区别
(1)where不能使用聚合函数,having可以
(2)where作用于查询之前,having作用于查询之后,
where 早于 group by 早于having
*四中排名函数:
(1)row_number;给数据添加递增序号
(2)rank;对数据进行间断序号排名(1,1,3)
(3)dense_rank;对数据进行连续序号排名(1,1,2)
*order by和group by的次序
group by 比order by先执行,order by不会对group by 内部进行排序,如果group by后只有一条记录,那么order by 将无效
*group_concat可以对内容排序
即group_concat(* order by * asc/desc)
*轮回问题
例:查目标月份的下一个月:
mod(month(curdate()),12) + 1
对现在目标除以12取余数,当月份不足12月时,余数为月份本身,取余数(当月月份)+1;当目标月份为12月,余数为0,取余数(0)+1,可得1月;
*枚举,并取前几位:
substring_index(group_concat(column_name),',',3)
以第三个逗号为断点截取
substring_index(group_concat(column_name),',',-1)
以倒数第一个逗号为断电截取后面的内容
*表格可以连续关联
()a left join () bleft join () c
网友评论