泰州市城市建设网站,北京华昊网站建设,手机版网站制作模板,免费在线看片一、创建分组
## 创建分组
-- 返回每个发布会的参会人数
SELECT event_id,COUNT(*) as canjia_num FROM sign_guest GROUP BY event_id; 1、group by子句可以包含任意个列#xff0c;但是但指定的所有列都是一起计算的。 group by 后2个字段一起计算的 2、group by后面可以跟…一、创建分组
## 创建分组
-- 返回每个发布会的参会人数
SELECT event_id,COUNT(*) as canjia_num FROM sign_guest GROUP BY event_id; 1、group by子句可以包含任意个列但是但指定的所有列都是一起计算的。 group by 后2个字段一起计算的 2、group by后面可以跟 a、检索列字段名 b、有效的表达式但不能是聚集函数如sum()、avg()、min()、max()、count()等 3、如果select中使用表达式则group by中也必须使用相同的表达式不能使用别名。 4、除了聚集函数外select中的所有字段都要在group by中给出。 5、如果分组的列值有NULL则会将所有NULL分为一组。 二、过滤分组 有一个共识要记在心里即 1、where过滤行having过滤分组 2、先过滤行再过滤分组。 ## 过滤分组-- 参会人数大于3的发布会
SELECT event_id,COUNT(*) as canjia_num FROM sign_guest GROUP BY event_idHAVING canjia_num 3;-- 还有哪些嘉宾没签到
SELECT event_id FROM sign_guest WHERE sign0GROUP BY event_id;-- 未签到嘉宾大于2的发布会
-- 拆解
-- a、过滤行过滤出未签到的嘉宾 -- 过滤行where sing0的数据
-- b、分组,每个发布会group by event_id -- 计总数每个发布会未签到的嘉宾总数select子句count()
-- c、过滤分组 -- canjia_num2SELECT event_id,COUNT(*) as canjia_num FROM sign_guest WHERE sign0GROUP BY event_idHAVING canjia_num2;# 与上一条相同追加了排序
SELECT event_id,COUNT(*) as canjia_num FROM sign_guest WHERE sign0GROUP BY event_idHAVING canjia_num2ORDER BY canjia_num DESC; Select子句顺序 1、select -- from 已是共识 2、where 行过滤 3、group by 分组 4、having 分组过滤 5、order by 排序 6、limit 限制检索行数 类似题有2个订单以上且订单10元的产品供应商