数据库面试题1

查询表a的数据,要求如下:

1. 七月份(2017)数据按日期(date)和渠道(channel)汇总点击数(click)的总数;

2. 汇总的点击数总数不大于1000;

3. 查询结果按汇总后的点击数降序排列;

4. 显示前5条;

 

1 SELECT count(click) AS 'c'
2 FROM a
3 WHERE date LIKE '201707%'      #筛选出7月份数据
4 GROUP BY date, channel         #按标识字段分组
5 HAVING c <= 1000               #筛选汇总点击数小于1000的分组,having作用是筛选满足条件的分组
6 ORDER BY c DESC                #按汇总点击数降序
7 LIMIT 5                        #只显示前5条

关于执行顺序:

1. 执行WHERE 对全表数据进行筛选,返回结果集A;

2. 针对结果集A,执行GROUP BY进行分组,返回结果集B;

3. 针对结果集B,执行SELECT进行查询,返回结果集C;

4. 针对结果集C,执行HAVING进行筛选,返回结果集D;

4. 针对结果集D,进行排序和限制查询条数;

5. 对结果集A执行GROUP BY,提前筛选符合条件的数据,可以减少查询次数;

6. 由于HAVING、ORDER BY在SELECT之后执行,因此可以用c来代表count(click),减少重复查询次数;

posted @ 2019-04-23 16:12  幸灾  阅读(137)  评论(0编辑  收藏  举报