SQL笔记
1、按照某一列指定排序,并且输出排序序号。
例如:c1是数量,我想按照不同的flag的类型,针对这个数量排序,并且将排序的数字也生成。
select *, row_number() over( partition by flag order by _c1 asc ) as rank from ${t1}
2、针对某一列中的字段,按照字段统计另一列的和。
例如我想针对id,将列c2和列fenzi的数值累计求和。
select visitor_id, sum(_c2) as allcat, sum(fenzi) as sim from ${t1} group by visitor_id;
3、以一列为一个组,组内去重另一列
selectdistinct b, a from ${t1}
或者
select a, b from ${t1} group by a, b
都可以实现:
4、A和B两个集合中,B集合中某一列不包含在A集合中的。
A集合:
B集合:
我们需要找出 B集合b列中没有出现在A集合中的 ,也就是b为D的那一行
select b.* from ${t1} a right join ${t2} b on a.b = b.b where a.a is null
5、一条语句按照某字段统计数量。
例如:表中的 type字段有 man 和 women,需要统计 男 数量和占比。
select sum( case type when '男' then 1 else 0 end ) as num, sum( case type when '男' then 1 else 0 end ) / sum(1) as rate from ${t1}