mysql 可以group by 两个字段吗

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql 可以group by 两个字段吗相关的知识,希望对你有一定的参考价值。

当然可以了,都好隔开,首先按第一个分组,第一个相同就按第二分组 参考技术A 可以,只不过结果是把两个组合后分组 参考技术B 可以。 两列的意思就是根据两个字段来分组。

mysql_分组group by

可以按照任意字段分组,但是分组完毕后,比如group by post,只能查看post字段,如果想查看组内信息,需要借助于聚合函数。

聚合函数:
  max 最大值
  min 最小值
  avg 平均值
  sum 求和
  count 总数
# 查询每个post字段下id的记录个数。
select post,count(id) as emp_count from employee group by post;

# 查询每个post字段下的salary字段数据的平均值。
select post,avg(salary) as emp_count from employee group by post;

 

 强调:

如果我们用unique的字段作为分组的依据,则每一条记录自成一组,这种分组没有意义
多条记录之间的某个字段值相同,该字段通常用来作为分组的依据

如果没有group by,则整个表为一组,同意可以使用聚合函数。

# 查询整个表中最高的salary的值。
select max(salary) as emp_count from employee;

 

 group_concat函数:

# 查询并列出每种post字段下面的name字段。
select post,group_concat(name) as emp_count from employee group by post;

 

having(过滤) 

#!!!执行优先级从高到低:where > group by > having 
#1. Where 发生在分组group by之前,因而Where中可以有任意字段,但是绝对不能使用聚合函数。

#2. Having发生在分组group by之后,因而Having中可以使用分组的字段,无法直接取到其他字段,可以使用聚合函数
# 查询以post字段分组后每个post字段下数量大于2的记录。
select post,group_concat(name),count(id) from employee group by post having count(id) > 2;

# 查询以post字段分组后,每个post字段下salary字段数据平均值大于10000的记录。
select post,avg(salary) from employee group by post having avg(salary) > 10000;

 

以上是关于mysql 可以group by 两个字段吗的主要内容,如果未能解决你的问题,请参考以下文章

group by 后面可以带两个字段吗

group by 两个字段

mysql group by 的用法,集合后取出指定的字段

为什么group by 不走索引

SQL中where和group by可以连用吗?having算是对检索条件的补充吗?

MySQL:是不是可以将 GROUP-BY 的结果加入到两个 SELECT 中?