应用场景:按照时间perday,统计每一天不同类型send对应的userid总数,数据如下:
显示为下面
一般思路:对perday进行group by 排序,但是时间会重复,多一条数据,无法将同一天的进行合并
with
cr as
( SELECT perday,case send when '30000' then count(userid) end as num1,case send when '50000' then count(userid) end as num2 from 表名 where send in (30000,50000) group by perday,send
)select perday,max(num1) as num1,max(num2) as num2 from cr group by perday order by perday(此处max尤为关键)
WITH AS 短语,也叫做子查询部分(subquery factoring),可以定义一个SQL片断,该SQL片断会被整个SQL语句用到。可以使SQL语句的可读性更高,也可以在UNION ALL的不同部分,作为提供数据的部分。