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()的问题的主要内容,如果未能解决你的问题,请参考以下文章

Lambda表达式 group by having问题

SQL重复记录查询-count与group by having结合查询重复记录

数据库中,select where group by having 执行顺序

sql 使用group by,having,count函数查询表中某字段相同内容的数据

mysql group by having 子句

SQL语句 ORDER BY HAVING GROUP BY WHERE 等区别