使用GROUP BY分组
文章目录
- GROUP BY 的基本使用
- GROUP BY 多列分组,用逗号隔开
- 使用GORUP BY时的注意点
- GROUP BY中使用WITH ROLLUP
GROUP BY 的基本使用
使用GROUP BY
将表中的数据分为若干组。
- 查询整个公司的平均工资。
# 查询整个公司的平均工资
SELECT AVG(salary)
FROM employees; -- 返回6461.682243
- 查询各个部门的平均工资。
# 查询各个部门的平均工资
SELECT department_id,AVG(salary)
FROM employees
GROUP BY department_id; -- 返回12行记录
- 查询各个工种的平均工资。
# 查询各个工种的平均工资
SELECT job_id,AVG(salary)
FROM employees
GROUP BY job_id; -- 返回19行记录
GROUP BY 多列分组,用逗号隔开
GROUP BY
多列分组,用逗号隔开。
- 查询各个部门中各个工种(或者各个工种中各个部门)的平均工资
# 查询各个部门中各个工种的平均工资
SELECT department_id,job_id,AVG(salary)
FROM employees
GROUP BY department_id,job_id; -- 返回20行记录# 查询各个工种中的各个部门的平均工资
SELECT job_id,department_id,AVG(salary)
FROM employees
GROUP BY job_id,department_id; -- 返回20行记录
使用GORUP BY时的注意点
SELECT
中出现的非组函数必须声明在GROUP BY
中,而GROUP BY
中声明的字段可以不出现在SELECT
中。
# SELECT中出现的非组函数必须出现在GROUP BY中
SELECT department_id,job_id,AVG(salary)
FROM employees
GROUP BY department_id,job_id;# GROUP BY中声明的字段可以不出现在SELECT中
SELECT AVG(salary)
FROM employees
GROUP BY department_id,job_id;# 错误的示例
SELECT department_id,AVG(salary)
FROM employees
GROUP BY department_id,job_id; -- MySQL虽然没有报错,但数据依然不正确。Orcal中会直接报错。
- GROUP BY的位置:
SELECT...FROM...WHERE...GROUP BY...ORDER BY...LIMIT...
# 查询各个部门的平均工资,且按照平均工资从低到高排序
SELECT department_id,AVG(salary) avg_sal
FROM employees
GROUP BY department_id
ORDER BY avg_sal ASC;
GROUP BY中使用WITH ROLLUP
使用WITH ROLLUP
关键字后,在所有查询出的分组记录之后增加一条记录,该记录计算查询出的所有记录的总和。
# 查询整个公司的平均工资
SELECT AVG(salary)
FROM employees; -- 返回6461.682243# 查询各个部门的平均工资
SELECT department_id,AVG(salary)
FROM employees
GROUP BY department_id; -- 返回12行记录# 查询各个部门的平均工资
SELECT department_id,AVG(salary)
FROM employees
GROUP BY department_id
WITH ROLLUP; -- 返回13行记录,且最后一条记录的数值是6461.682243,即整个公司的平均工资
注意,当使用WITH ROLLUP
时,不能同时使用ORDER BY
进行结果排序。也就是说,WITH ROLLUP
和ORDER BY
是互相排斥的。
使用GROUP BY分组相关推荐
- group by 分组后 返回的是一个同属性的集合
group by 分组后 返回的是一个同属性的集合 我们可以遍历该集合 转载于:https://www.cnblogs.com/classmethond/p/10164326.html
- 卷积网络基础知识---Group Convolution分组卷积
Group Convolution分组卷积,以及Depthwise Convolution和Global Depthwise Convolution https://www.cnblogs.com/s ...
- 详解在group by分组查询中where 和 having的用法和区别。
我地都知道sql 中 where 和 having 都是用来筛选条件的关键字. 而且having 一般和group by 一齐使用, 但是where 也可以用group by 一齐使用的. 下面用 ...
- mysql单列去重复group by分组取每组前几条记录加order by排序
<div class="post"><h1 class="postTitle"><a id="cb_post_title ...
- group by 分组函数 的用法
GROUP BY 是对结果集 进行分组 然后对每一组 ,可以对每一组进行统计 例如对每一组的某个字段进行统计 例如求和sum(column) 举个例子,我查询某个用户的某个时间段 的信息 1.没用到g ...
- mysql group by 聚合_浅析MySQL使用 GROUP BY 分组聚合与细分聚合
1. 聚合函数(Aggregate Function) MySQL(5.7 ) 官方文档中给出的聚合函数列表(图片)如下: 除非另有说明,否则聚合函数都会忽略空值(NULL values). 2. 聚 ...
- group by 分组
group by 分组:一般情况下group需与统计函数(聚合函数)一起使用才有意义 mysql中的五种统计函数: (1)max:求最大值 select max(goods_price) from g ...
- java中mysql分组查询_ES对应mysql的group by分组查询javaApi,多对多关系的分组查询...
ES对应mysql的group by分组查询javaApi,多对多关系的分组查询 比如我这边有个下列订单索引数据,现在的需求是按用户(fmerchantId)和支付方式(fchannelId)进行分组 ...
- group by 分组后 再对所有的数据求和
SELECT category, count( category ) AS category FROM dept GROUP BY category WITH ROLLUP; WITH ROLLUP ...
- MySQL5.7用group by分组根据组中某个字段的最大值求取那条记录(注意是整条记录)
首先注意,取每组最大的数据和取每组最大的一条记录是两个概念,前者很简单直接分组,max()即可.另外由于我的是5.7.24版本,5.7版本普遍存在一个问题,就是select的字段只能是group by ...
最新文章
- php uncaught thrown,PHP异常详解
- solrCloud源码分析之CloudSolrClient
- 获山东科技最高奖-农业大健康·万书波:沉醉谋定花生增产
- Scala函数式编程:偏函数
- 聊聊flink Table的OrderBy及Limit
- 高级java技术web组件_(重温)JavaWeb--Servlet技术(二)(JavaWeb 的三大组件之一)...
- 强制关机对电脑的影响_笔记本电脑需要每天关机吗?长期开机对电脑有影响么?...
- 在Eclispe中编译运行jbox2d
- 【白皮书分享】2020智能体白皮书-华为.pdf(附下载链接)
- Java魔法堂:注解用法详解——@SuppressWarnings(转)
- Chrome扩展推荐
- Android抓包工具Fiddler的使用教程
- win8 性能测试软件,win8系统优化软件评测
- UVA 1391 - Astronauts(2-SET)
- “责任”也是一种竞争力:《穹顶之下》与美丽中国
- 100个最热门的国人开发开源软件
- Android相机预览,指定区域显示预览框,在区域内出现人脸进行人脸识别,并抓拍人脸照片存在本地,CameraX,虹软人脸识别
- 《云计算架构技术与实践》连载(2):1.2 云计算的发展趋势
- 基于MATLAB的数字证件号识别
- k8s-linux上安装
热门文章
- 杨承润:世界首席创业家导师杨承润,创业16年,杨承润和他的《慧眼经营思维》
- solidworks2014方程式添加全局变量存在句法错误的解决方案
- 《SolidWorks 2014中文版机械设计从入门到精通》——2.3 草图编辑
- 《SolidWorks 2014中文版机械设计从入门到精通》——第 1 章 认识SolidWorks 1.1 SolidWorks概述...
- 【论文阅读】The Generals’ Scuttlebutt: Byzantine-Resilient Gossip Protocols
- unity3d 锁定鼠标
- 医院病案管理系统MRMS源码 病案管理 医院源码
- JS遍历(循环)——JS对象遍历(循环)JS数组遍历(循环)
- 灰色页面,HTML灰色页面
- Hive数据导出为csv、tsv文件的几种方法