-
条件:无;
-
每个学校每种性别:
先按学校分组,之后再按性别分组 ;顺序不能倒过来,倒过来就变成了先按性别分好组之后,再按学校分组了,所以应该是:group by gender university,gender
- 用户数:
使用聚合函数count(id),id是唯一标识,应该使用id,虽然使用其他结果没有错,但是在实际项目开发中的大量数据下,会发生误差。
- 30天内平均活跃天数:
使用聚合函数avg(active_days_within_30)
- 平均发帖数量: 使用聚合函数avg(question_cnt)
tips:分组字段不能是聚合函数;
在面试某上海上市金融科技公司中曾被问到的一个问题是:
- 你在项目中你用过分组函数吗?
我:用过(必须展现实力)
- 那你听清楚我下面这个问题,分组SQL语句中,select和from和where和group by 和 having 这几部分的执行顺序是怎么样的?
我:先是from,再到 where ,再到select,再到group by ,最后having。
- 你能说说为什么是这样子的吗?
我:因为首先肯定是要确定数据从哪张表来,然后按where条件查询出结果,再然后才能进行group by分组(分组条件可以有多个,按字段顺序依次分组),最后是由having对分组后的结果集进行过滤
SELECT
gender,
university,
COUNT(id) user_num,
avg(active_days_within_30) avg_active_day,
avg(question_cnt) avg_question_cnt
FROM user_profile
GROUP BY university,gender

京公网安备 11010502036488号