工作中难免会写sql从数据库中到导出报表,本身sql是非常简单。只不过一个报表囊括的业务含义比较复杂时,需要我们使用大量的连接查询(子查询都可以用连接查询来实现)、大量的where条件来实现,那是就显得很费脑力了,但其却并没有什么技术含量。
这里介绍两个sql场景,根据本人的经验,这两个场景的sql作为整体sql的部分查询时,往往增大了阅读难度。
1、一维
含义:统计不同国家的人的数量,并排序
select tem.country,tem.number from
(select country,count(pupulation) as number
from table
group by country
) tem
order by number
2、二维
含义:统计不同国家的男、女人数数量,按男性数量排序
select tem.country,tem.male_number,tem.female_number from
(
select country,
sum( case when sex = '1' then population ELSE 0 END) as male_number,
sum( case when sex = '2' then population ELSE 0 END) as famale_number
from table
group by country
) tem
order by male_number