mysql加强(3)~分组(统计)查询
一、分组(统计) 查询
1、语法 :
select [distinct] *| 分组字段1[别名] [,分组字段2[别名],...] | 统计函数
from 表名 [别名]
[where 条件(s)]
[group by 分组字段1[,分组字段2]]
[having 分组后的过滤条件(可以使用统计函数)]
[order by 排序字段 asc|desc[,排序字段 asc|desc]];
2、注意分组的细节:
❀ 分组查询:select 后的字段必须是分组字段(跟在group by 后面的字段) 或 统计函数字段
#错误使用分组(统计)查询【查询的字段不是分组字段】
select empno, count(empno) from emp;
❀ 不能在where 子句中限制组,即不能在where子句中使用组函数(统计函数)。
#错误使用分组(统计)查询【组函数出现在where的子句中】
select avg(sal) from emp where avg(sal) > 2000 group by deptno;
❀ 对分组的结果进行限制(过滤)---使用having对组进行筛选
#查询各个部门的平均工资
select deptno, avg(sal) from emp group by deptno;
#查询平均工资高于2000的部门和其平均工资 ('平均工资高于2000'是分组之后的筛选条件)
select avg(sal) from emp group by deptno having avg(sal) > 2000;
❀ 并列分组:
单列分组:水果分为苹果、香蕉、葡萄。一共分为3个组。
什么是并列分组:水果分为苹果、香蕉、葡萄;然后苹果又可以分为红富士、丑苹果;香蕉又分为芭蕉、小米蕉;葡萄又分为红提、青提。一共分成6个组。
#查看各个部门和岗位的平均工资
select deptno, job, avg(sal) from emp group by deptno, job;

■ sql语句的执行顺序:从哪张表过滤掉不合法数据,然后分组(对分组结果再过滤一下)显示出来,进行排序、分页。
from where group by having select order by limit
■ where 和 having 执行的先后:
① where 是在分组之前进行筛选,先过滤掉不合法数据, 在 where 之中不能使用统计函数(组函数)。
② having 是在分组之后进行筛选,对组的结果进行过滤。
mysql加强(3)~分组(统计)查询的更多相关文章
- SQL Fundamentals: 分组统计查询(FROM-WHERE-GROUPBY-HAVING-SELECT-ORDER BY)
SQL Fundamentals || Oracle SQL语言 统计函数 单字段分组统计(GROUP BY) 多字段分组统计 HAVING子句 控制操作的显示列:基本的SELECT语句 控制行:限定 ...
- Oracle数据库从入门到精通-分组统计查询
视频课程:李兴华 Oracle从入门到精通 视频课程学习者:阳光罗诺 视频来源:51CTO学院 整体内容: 统计函数的使用 分组统计查询的实现 对分组的数据过滤 统计函数 在之前我们就学习过一个COU ...
- 010.简单查询、分组统计查询、多表连接查询(sql实例)
-------------------------------------day3------------ --添加多行数据:------INSERT [INTO] 表名 [(列的列表)] --SEL ...
- sql 分组统计查询并横纵坐标转换
关于sql 分组统计查询,我们在做报表的时候经常需要用到;今天就在这里整理下; 先附上一段sql代码: if object_id(N'#mytb',N'U') is not null drop tab ...
- mysql按日期分组统计数据
最近在做一个招聘网时,需要显示一个月内企业招聘信息的发布数量,按日期分组统计,刚开始是直接从源数据库表里面进行group by,但这样子就出现日期不连续的问题了,我想要的效果是,若当天没有数据,则显示 ...
- MySQL 分组统计查询 表连接(3)
1 查询底薪超过公司平均底薪的员工信息? select e.empno,e.ename,e.salfrom t_emp as e join (select avg(sal) as avg from t ...
- 记录一个mysql按日期分组统计的查询
http://blog.csdn.net/llwan/article/details/7738991
- rails 各种分组统计查询
SpecialGroup.group(:special_type).countselect special_type,count(*) from special_groups group by spe ...
- Mysql按时间段分组查询
Mysql按时间段分组查询来统计会员的个数,mysql个数 Mysql按时间段分组查询来统计会员的个数,mysql个数 1.使用case when方法(不建议使用)- 代码如下 复制代码SELECT ...
随机推荐
- 【LeetCode】345. Reverse Vowels of a String 解题报告(Java & Python & C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 使用栈 双指针 日期 [LeetCode] 题目地址 ...
- 【九度OJ】题目1475:IP数据包解析 解题报告
[九度OJ]题目1475:IP数据包解析 解题报告 标签(空格分隔): 九度OJ http://ac.jobdu.com/problem.php?pid=1475 题目描述: 我们都学习过计算机网络, ...
- 【LeetCode】98. Validate Binary Search Tree 解题报告(Python & C++ & Java)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 递归 BST的中序遍历是有序的 日期 题目地址:ht ...
- 【LeetCode】905. Sort Array By Parity 解题报告(Python)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述: 题目大意 解题方法 自定义sorted函数的cmp 日期 题目地址:h ...
- Beautiful Walls
[1553] Beautiful Walls 时间限制: 1000 ms 内存限制: 65535 K 问题描述 To simplify the building process, XadillaX b ...
- HPU积分赛 2019.8.18
A题 给出n个数,问这n个数能不能分成奇数个连续的长度为奇数并且首尾均为奇数的序列 Codeforces849A 题解传送门 代码 1 #include <bits/stdc++.h> 2 ...
- SOFA 数据透析
数据透传: 在 RPC调用中,数据的传递,是通过接口方法参数来传递的,需要接口方定义好一些参数允许传递才可以,在一些场景下,我们希望,能够更通用的传递一些参数,比如一些标识性的信息.业务方可能希望,在 ...
- Mybatis源码系列 执行流程(一)
1.Mybatis的使用 public static void main(String[] args) throws IOException { //1.获取配置文件流 InputStream is ...
- 认识MongoDB(二)
MongoDB是什么 MongoDB 是一个开源的.可扩展的.跨平台的.面向文档的非关系型数据库,它由 C++ 语言编写,旨在为 WEB 应用提供可扩展的高性能数据存储解决方案. 在 MongoDB ...
- 总结 sql 的 并集、交集、差集
有两个表 ,表a ,表b , create table a { age int , name varchar(20) } ending=innodb; insert into a values(13 ...