mysql如何在查询语句中return,MySQL 5种常用查询语句-group

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:selectmax(列名)from 表名; 单条数据

select max(age) from msg;

7afda58a5bdca29c38c0890ad2f5bcaa.png

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

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

58b580f41b0487e4e4ae1672c185f001.png

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

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

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

d992bccadca157b5acced11825b3f412.png

sum 求总和

如,求4个人总年龄

select sum(age) from msg;

min 求最小

avg 求平均值

count 求总行数

如,求总人数(行数)

select count(*) from msg;

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

e69cb4adb97eceb574dd7b64c4d1917b.png

错误写法:

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

d82cace4a07ef69b05bdcd072ba6f17d.png

其中记录 NULL 表示所有人的登录次数。

我们可以使用 coalesce 来设置一个可以取代 NUll 的名称,coalesce 语法:

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值