mysql中group by子句和聚合函数MAX(),MIN(),SUM(),AVG()等的使用
来源:互联网 发布:淘宝店铺装修工具 编辑:程序博客网 时间:2024/05/16 08:54
1.问题产生的原因:
使用group by 子句和聚合函数同时使用时,可能会出现需要的信息跟预期不符的情况,如有下表:
CREATE TABLE t_exampaper (
id varchar(32) NOT NULL,
know_id varchar(32) NOT NULL COMMENT '章/节编号',
exam_type int(1) NOT NULL COMMENT '0:章节考试,1:练习,2:综合考试',
score double DEFAULT 0 COMMENT '学生考试得分',
start_time datetime DEFAULT NOW(),
end_time datetime DEFAULT NOW(),
course_id varchar(32) NOT NULL,
user_id varchar(32) NOT NULL,
apply_time datetime DEFAULT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
用group by 和聚合函数MAX()查询本表 :某一用户同一个章/节(know_id相同)记录中score最大的记录,即先分组,再在组内求最大值。
如果使用如下查询语句,那么得出来的主键id会产生混乱的现象,即一个id对应了不属于自己的信息
Bad example:
SELECT id, course_id, know_id, exam_type,user_id,MAX(score)
FROM t_exam_paper WHERE user_id='XXXXXXXXX' GROUP BY know_id;
本语句执行后,对know_id进行分组,然后在分组中读取第一条记录作为最大值,而不是如预期中的在组内获取最大值
2.问题解决方法:
可以通过在group by 语句后添加having条件,在having条件中进行聚合运算。
correct example:
SELECT id, course_id, know_id,score,exam_type,user_id
FROM t_exam_paper WHERE user_id='XXXXXXXXX' GROUP BY know_id,score HAVING score = MAX(score)
感谢博文:http://blog.csdn.net/q1054261752/article/details/48156177
- mysql中group by子句和聚合函数MAX(),MIN(),SUM(),AVG()等的使用
- 聚合函数(sum、count、max、min、avg)、where、group by、having的组合用法实例
- group by与avg(),max(),min(),sum()函数的关系
- 在oracle的聚合函数(sum、avg等)中使用group by来分组你的结果
- mongodb 中max、min、sum、avg等函数用法
- 6.组函数(avg(),sum(),max(),min(),count())、多行函数,分组数据(group by,求各部门的平均工资),分组过滤(having和where),sql优化
- 组函数(avg(),sum(),max(),min(),count())、多行函数,分组数据(group by,求各部门的平均工资),分组过滤(having和where),sql优化 .
- Oracle中有关Group by 中avg();sum();min();max();count();的运用整理(Oracle的执行顺序)
- Oracle中有关Group by 中avg();sum();min();max();count();的运用整理(Oracle的执行顺序)
- HQL中的聚合函数:count()sum()avg()max()min()
- oracle中的聚合函数count、max、min、sum、avg等等
- arcigs js api 查询,使用group by 和sum 等聚合函数的使用
- oracle中的聚合函数count、max、min、sum、avg以及NVL函数的用法
- SQL中count()/max() /min()/sum()avg()/sum()等函数用法
- 聚合函数(sum,count,max,avg等)ZT
- 在oracle的聚合函数(sum、avg等)中使用NVL函数,强迫加入空值
- SQL的聚合函数与Group By和Having子句
- Mysql 使用函数SUM/GROUP_CONCAT 时与GROUP BY 子句
- org.jsoup.HttpStatusException:HTTP error fetching URL. Status=500, URL=******************
- android studio 修改包名
- 海量结构化日志分析系统
- 使用RTL-SDR和Matlab Simulink玩转软件无线电(三)
- io对比分析
- mysql中group by子句和聚合函数MAX(),MIN(),SUM(),AVG()等的使用
- 文章标题
- Wi-Fi模块实现AP和Station共存
- ListIterator
- TCP网络编程中connect()、listen()跟accept()三者之间的关系
- RocketMQ概念模型
- Target runtime Apache Tomcat v7.0 is not defined.
- CRC循环冗余校验码
- PHP一致性Hash