~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

explain:

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

group_concat:

SELECT group_concat(DISTINCT stu_id) from ent_order where rand()>0.9 and stu_id >5000 limit 200;

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

left Join:

select up.id,up.start_time,up.end_time, up.paper_type_code, up.user_number, up.status_code, up.evaluated_score, up.end_time, qq.id as qq_id, SUM(qq.point) as sum_qq_point, wq.id as wq_id, sum(wq.point) as sum_wq_point
from (
(select * from t_user_pa tup WHERE date(tup.end_time) = '2017-07-17' and tup.status_code = 'COMPLETE')
up left join t_quiz_qu qq on up.par_id = qq.t_qui_par_id )
left join t_wor_ques wq
on up.par_id = wq.t_wor_par_id
group by up.id

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

GROUP BY语法可以根据给定数据列的每个成员对查询结果进行分组统计,最终得到一个分组汇总表。

select子句中的列名必须为分组列或列函数,列函数对于group by子句定义的每个组返回一个结果。

某个员工信息表结构和数据如下:

  id  name  dept  salary  edlevel  	 hiredate 
  1 张三 开发部 2000 3 2009-10-11
  2 李四 开发部 2500 3 2009-10-01
  3 王五 设计部 2600 5 2010-10-02
  4 王六 设计部 2300 4 2010-10-03
  5 马七 设计部 2100 4 2010-10-06
  6 赵八 销售部 3000 5 2010-10-05
  7 钱九 销售部 3100 7 2010-10-07
  8 孙十 销售部 3500 7 2010-10-06 
我想列出每个部门最高薪水的结果,sql语句如下:
select dept , max(salary) AS MAXIMUM
FROM STAFF
GROUP BY DEPT
查询结果如下:
dept       MAXIMUM
开发部      4500
设计部 2600
销售部      3500
解释一下这个结果:
1、 满足“SELECT子句中的列名必须为分组列或列函数”,因为SELECT有group by中包含的列dept;
2、“列函数对于group by子句定义的每个组各返回一个结果”,根据部门分组,对每个部门返回一个结果,就是每个部门的最高薪水。
将where子句与group by子句一起使用
分组查询可以在形成组和计算列函数之前具有消除非限定行的标准where子句。必须在group by子句之前指定where子句
例如,查询公司2010年入职的各个部门每个级别里的最高薪水
  1. SELECT dept,edlevel,MAX(salary) AS MAXIMUM
  2. FROM STAFF
  3. WHERE hiredate > '2010-01-01'
  4. GROUP BY dept,edlevel
查询结果如下:
dept     edlevel     MAXIMUM
设计部      4             2300
设计部      5	       2600
销售部      5	       3000
销售部      7 	       3500
在SELECT语句中指定的每个列名也在GROUP BY子句中提到,未在这两个地方提到的列名将产生错误。GROUP BY子句对dept和edlevel的每个唯一组合各返回一行。
GROUP BY子句之后使用Having子句
可应用限定条件进行分组,以便系统仅对满足条件的组返回结果。因此,在GROUP BY子句后面包含了一个HAVING子句。HAVING类似于WHERE(唯一的差别是WHERE过滤行,HAVING过滤组)AVING支持所有WHERE操作符。
例如,查找雇员数超过2个的部门的最高和最低薪水:
  1. SELECT dept ,MAX(salary) AS MAXIMUM ,MIN(salary) AS MINIMUM
  2. FROM STAFF
  3. GROUP BY dept
  4. HAVING COUNT(*) > 2
  5. ORDER BY dept
查询结果如下:
dept     MAXIMUM       MINIMUM
设计部      2600  		2100
销售部 3500 3000
例如,查找雇员平均工资大于3000的部门的最高薪水和最低薪水:
  1. SELECT dept,MAX(salary) AS MAXIMUM,MIN(salary) AS MINIMUM
  2. FROM STAFF
  3. GROUP BY dept
  4. HAVING AVG(salary) > 3000
  5. ORDER BY dept
查询结果如下:
dept   	MAXIMUM   MINIMUM
销售部     	 3500		3000

Mysql常用语句/group by 和 having子句的更多相关文章

  1. MySQL 常用语句 (汇集)

    原文地址:MySql常用语句作者:wuyanle 一.mysql常用语句 创建,删除和最基本查询: 显示数据库  mysql->show databases; 创建数据库  mysql-> ...

  2. MySQL 常用语句大全

    MySQL 常用语句大全 一.连接 MySQL 格式: mysql -h 主机地址 -u 用户名 -p 用户密码 1.例 1:连接到本机上的 MYSQL. 首先在打开 DOS 窗口,然后进入目录 my ...

  3. 0927—MySQL常用语句集合

    一.连接MySQL 格式: mysql -h 主机地址 -u 用户名 -p 用户密码 1.例1:连接到本机上的MYSQL. 首先在打开DOS窗口,然后进入目录 mysql bin,再键入命令mysql ...

  4. Mysql常用语句与函数(待续)

    -- 查询语句select class from stu_info where sid=1000000102;select * from stu_info t where t.age=88; -- t ...

  5. oracle 和 mysql 常用语句对比汇总

    文章目录 一.数据库管理 1.1 用户管理 1.1.1 mysql用户.权限管理 1.1.2 oracle 用户.角色.权限管理 二.DQL 语句 2.1 基础查询 1.常量查询的区别: 2.字符串拼 ...

  6. mysql常用语句总结

    1.创建语句 CREATE DATABASE database_name //创建数据库 //删表 DROP TABLE IF EXISTS `t_social_user_extend`; //建表C ...

  7. MySQL常用语句大全

    数据库操作:创建数据库create database database_name 查看数据库 show databases使用数据库use dbname删除数据库 drop database dbna ...

  8. mysql常用语句及关键字

    一.常用sql语句 1.创建数据库userCREATE  DATABASE user; 2.删除数据库userDROP DATABASE user; 3.使用数据库userUSE user;显示数据库 ...

  9. mysql常用语句及实题训练

    基本语句操作 创建数据库: create database database-name 1 删除数据库: drop database database-name 1 修改数据名: RENAME DAT ...

随机推荐

  1. asp.net core 创建允许跨域请求的api, cors.

    配置应用方域名. 在webapi中引用cors包,在startup的Configure\ConfigServices中增加启动项配置,在api中增加EnableCors的Attribute属性.即可. ...

  2. MediatR

    1.MediatR是什么? 微软官方eshopOnContainer开源项目中使用到了该工具, mediatR 是一种中介工具,解耦了消息处理器和消息之间耦合的类库,支持跨平台 .net Standa ...

  3. nexus、maven私服仓库(一)

    下载地址:http://www.sonatype.com/download-oss-sonatype 将下载好的nexus解压到指定的目录下,我这里使用的是nexus-3.14.0-04-win64  ...

  4. python面试题之Python是如何进行内存管理的

    python内部使用引用计数,来保持追踪内存中的对象,Python内部记录了对象有多少个引用,即引用计数,当对象被创建时就创建了一个引用计数,当对象不再需要时,这个对象的引用计数为0时,它被垃圾回收. ...

  5. 046 Oracle执行慢的SQL

    -- 执行最慢的sql SELECT * FROM (SELECT sa.SQL_TEXT, sa.SQL_FULLTEXT, sa.EXECUTIONS as "exeCount" ...

  6. tesorflow - create neural network+结果可视化+加速神经网络训练+Optimizer+TensorFlow

    以下仅为了自己方便查看,绝大部分参考来源:莫烦Python,建议去看原博客 一.添加层 def add_layer() 定义 add_layer()函数 在 Tensorflow 里定义一个添加层的函 ...

  7. html 水平竖直居中

    line-height:容器高度 <!DOCTYPE html> <html lang="en"> <head> <meta charse ...

  8. linux 更新yum源 改成阿里云源

    1.备份 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup 2.下载新的CentOS-Base ...

  9. ceil()函数的应用-hdu1065

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1065 题目描述: floor(x)  is the largest integer not great ...

  10. tensorflow下基于DNN实现实时分辨人脸微表情

    参加学校的国创比赛的时候,我们小组的项目有一部分内容需要用到利用摄像头实现实时检测人脸的表情,因为最近都在看深度学习方面的相关知识,所以就自己动手实现了一下这个小Demo.参考网上的资料,发现大部分是 ...