想要的数据在多张表里,想取多个字段 表连接join
两张表数据的字段一样,想合并起来 union
去重 distinct
分组聚合函数和group by
筛选 where(行)/having(组)
希望查询结果从高到低/从低到高排序?—— 排序 order by
将数值型的变量转化为分类型的变量?—— case when 条件函数
不想全局排序,需要分组排序
rank()排序相同时会重复,总数不会变 ,意思是会出现1、1、3这样的排序结果;
dense_rank() 排序相同时会重复,总数会减少,意思是会出现1、1、2这样的排序结果。
row_number() 则在排序相同时不重复,会根据顺序排序。
select
cookieid,
createtime,
pv,
rank() over (partition by cookieid order by pv desc) as rn1,
dense_rank() over (partition by cookieid order by pv desc) as rn2,
row_number() over (partition by cookieid order by pv desc) as rn3
from cookie.cookie2
where cookieid='cookie1';
ROW_NUMBER、RANK和DENSE_RANK的区别
row_number: 按顺序编号,不留空位
rank: 按顺序编号,相同的值编相同号,留空位
dense_rank: 按顺序编号,相同的值编相同的号,不留空位
想要对时间字段进行操作 时间函数
to_date函数可以把时间的字符串形式转化为时间类型,再进行后续的计算;
常用的日期提取函数包括 year()/month()/day()/hour()/minute()/second()
日期运算函数包括datediff(enddate,stratdate) 计算两个时间的时间差(day);
date_sub(stratdate,days) 返回开始日期startdate减少days天后的日期。
date_add(startdate,days) 返回开始日期startdate增加days天后的日期。
https://www.cnblogs.com/ZackSun/p/9713435.html