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}
原文地址:https://www.cnblogs.com/by-dream/p/9448676.html