group by...having count()的问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了group by...having count()的问题相关的知识,希望对你有一定的参考价值。
这个应该是查重复数据的,我想知道group by后面加的字段都应该是什么类型的,因为我发现除了count()中的字段必须加外,每加不同的字段查询的结果也不相同。
参考技术A group by后面可以加任何字段,前题 是这个字段前面必须要出现.也就是说select 后面必须要有同是前面必须要用聚合函数.如count ,sum等. 参考技术B 这SQL语句中的group by语句 主要是按照什么字段进行组函数 也就是你提到的count() 还有就是max什么的 所以group by后面加的字段几乎都是这些组函数操作的字段 参考技术C group
by后面可以加任何字段
例如
一个表中
是学校所有学生的花名册
group
by
专业
就是按专业分类排序
必须是该字段可以分组
你要是说group
by
姓名
的话
那恐怕就很难分组了
MySQL进阶5--分组排序和分组查询 group by(having) /order by
MySQL进阶--分组排序和分组查询 group by(having) /order by
/* 介绍分组函数 功能:用做统计使用,又称为聚合函数或组函数 1.分类: sum, avg 求和 /平均数, 只处理数值型,都绝对忽略NULL值(avg处理时统计的个数没有null项) max ,min ,可以求字符串最大最小 ,可以匹配日期,都绝对忽略NULL值 count ,不计算NULL ,不把null算进数里 #2. 参数支持类型 SELECT MIN(last_name) ,MAX(last_name) FROM employees; #Abel Zlotkey SELECT MIN(hiredate),MAX(hiredate) FROM employees; # 3. 都可以和distinct 搭配 4. count 函数的详细介绍 count(*) ; //统计全部行数 count(常量) ;//统计全部行数 -------------------------- 介绍分组查询 group by 语法: select 分组函数(max/min/count 之类搭配) ,列名 (可以省略,对应group by后的) from 表 [where 筛选条件] --分组前进行筛选 group by 分组的列表 [子句: having 筛选条件] -- 分组后进行筛选,约束分组函数:max/min/count 之类 [order by 子句] -- 分组后进行排序,可以排序分组函数 注意: 查询列表必须特殊,要求使分组函数和group by后出现的字段 */ USE myemployees; #案例1,查询大于两个人的所有部门,输出个数 SELECT COUNT(*),department_id FROM employees GROUP BY department_id HAVING COUNT(*)>2; #案例2. 查询每个工种 有奖金的员工的最高工资且12000的工种编号和 最高工资 SELECT job_id,MAX(salary) FROM employees WHERE commission_pct IS NOT NULL GROUP BY job_id HAVING MAX(salary)>12000; #案例3: 添加排序 #查询每个部门的每个工种的员工的平均工资>10000 ,并且按平均工资的高低显示 SELECT AVG(salary),department_id #AVG(salary) a, 设置为别名更简单 FROM employees WHERE department_id IS NOT NULL GROUP BY job_id,department_id HAVING AVG(salary) > 10000 ORDER BY AVG(salary) DESC;
以上是关于group by...having count()的问题的主要内容,如果未能解决你的问题,请参考以下文章
SQL重复记录查询-count与group by having结合查询重复记录
数据库中,select where group by having 执行顺序