文档章节

MySQL 5种常用查询语句-group

明月知心
 明月知心
发布于 2017/02/25 22:38
字数 550
阅读 31
收藏 0

group by 分组查询,一般配合统计函数来使用

max:求最大
min:求最小

sum:求总和
avg:求平均值
count:求总行数

数据库如下表所示

id name age 学号 编号
1 lee 10 Null 0
2 骚猪 33 Null 1
3 张鹏 22 Null 1
4 大表哥 12 00001 0

统计函数:

max 取最大值

用法1:select max(列名) from 表名; 单条数据

select max(age) from msg;

用法2:select id,name,max(age),学号 from 表名; 多条数据查询,用逗号隔开,仅在MySQL 中使用,但无意义,应为数值没有对应。如果有意义,必须要加 group by

select id,name,max(age),学号 from msg;

用法3:select max(列名) from 表名 group by 列名 
           
 #注意 group by 列名 (该列名必须是可以分组的列 )

如:取编号1,编号2这2组中,年龄最大的人,查询结果有几组,就有几行

select id,max(age) from msg group by 编号;

sum 求总和

如,求4个人总年龄

select sum(age) from msg;

min 求最小

avg 求平均值

count 求总行数

如,求总人数(行数)

select count(*) from msg;

注意:count 只能统计行数,无论 count() 中的内容是什么,如下图所示,如果要统计每个人的挂科的数量

错误写法:

select name,count(fs<60) from cj group by name;
-- count(fs<60) 并不是统计 fs<60的 个数,它依然统计行数

-- 所以得到结果
/*
+------+--------------+
| name | count(fs<60) |
+------+--------------+
| 张三 |            3 |
| 李四 |            2 |
| 王五 |            1 |
+------+--------------+

*/

正确写法:

select name,sum(fs<60) from cj group by name;
/*
1、fs <60  得到结果 为0 或1
2、求xx条件用sum ,不能用count
+------+------------+
| name | sum(fs<60) |
+------+------------+
| 张三 |          2 |
| 李四 |          2 |
| 王五 |          1 |
+------+------------+
*/

给列名加1个别名:as

select 编号 as 分组 from msg;

with rollup 

用来在分组统计数据的基础上再进行统计汇总,即用来得到group by的汇总信息

SELECT name, SUM(singin) as singin_count FROM  employee_tbl GROUP BY name WITH ROLLUP

其中记录 NULL 表示所有人的登录次数。
我们可以使用 coalesce 来设置一个可以取代 NUll 的名称,coalesce 语法:

SELECT coalesce(name, '总数'), SUM(singin) as singin_count FROM  employee_tbl GROUP BY name WITH ROLLUP;

 

© 著作权归作者所有

明月知心
粉丝 7
博文 158
码字总数 71882
作品 0
武汉
程序员
私信 提问
MySQL查询逻辑处理语句

mysql中的完整的查询语句: select 字段列表 from 表名 [where条件] [group by 字段] [having] [order by 字段 asc|desc] [limit [开始位置],长度] where:条件查询 group by:分组 having:...

boonya
2016/10/09
118
0
Python基础——mysql数据库、SQLAlchemy

一、MySQL常用操作 1、创建库 create database test; 2、创建表 create table student(id int not null); 3、授权一个用户 grant all privileges on . to 'username'@'%' identified by 'pas......

初雪之路
2018/09/20
0
0
性能优化之MySQL各种层面优化

  可以进行优化的层面   硬件   系统配置   数据库表结构   SQL 语句和索引   进行优化前的数据准备   打开以下链接下载数据      打开终端,执行以下命令         ...

思梦教育
2018/06/26
0
0
课程「性能优化之MySQL优化」的复习笔记

可以进行优化的层面 硬件 系统配置 数据库表结构 SQL 语句和索引 进行优化前的数据准备 打开以下链接下载数据 打开终端,执行以下命令 SQL 语句和索引 MySQL 慢查询日志 如何发现有问题的 SQ...

javaer
2016/11/04
40
0
MySQL查询数据表中数据记录(包括多表查询)

MySQL查询数据表中数据记录(包括多表查询) 在MySQL中创建数据库的目的是为了使用其中的数据。 使用select查询语句可以从数据库中把数据查询出来。 select语句的语法格式如下: select sel...

余二五
2017/11/23
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Spring使用ThreadPoolTaskExecutor自定义线程池及实现异步调用

多线程一直是工作或面试过程中的高频知识点,今天给大家分享一下使用 ThreadPoolTaskExecutor 来自定义线程池和实现异步调用多线程。 一、ThreadPoolTaskExecutor 本文采用 Executors 的工厂...

CREATE_17
今天
5
0
CSS盒子模型

CSS盒子模型 组成: content --> padding --> border --> margin 像现实生活中的快递: 物品 --> 填充物 --> 包装盒 --> 盒子与盒子之间的间距 content :width、height组成的 内容区域 padd......

studywin
今天
7
0
修复Win10下开始菜单、设置等系统软件无法打开的问题

因为各种各样的原因导致系统文件丢失、损坏、被修改,而造成win10的开始菜单、设置等系统软件无法打开的情况,可以尝试如下方法解决 此方法只在部分情况下有效,但值得一试 用Windows键+R打开...

locbytes
昨天
8
0
jquery 添加和删除节点

本文转载于:专业的前端网站➺jquery 添加和删除节点 // 增加一个三和一节点function addPanel() { // var newPanel = $('.my-panel').clone(true) var newPanel = $(".triple-panel-con......

前端老手
昨天
8
0
一、Django基础

一、web框架分类和wsgiref模块使用介绍 web框架的本质 socket服务端 与 浏览器的通信 socket服务端功能划分: 负责与浏览器收发消息(socket通信) --> wsgiref/uWsgi/gunicorn... 根据用户访问...

ZeroBit
昨天
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部