数据库中如何查询count中的最大值max

参考链接:

sql 怎么取count(*)中的最大值_FlashCanSavetheWorld的博客-CSDN博客

起初并没有看懂这个链接的意思,在同事的帮助下得到了实现。

过程是这样的:

(不想看过程可直接跳到最后看结果)

我有两个表,一个是飞机故障的信息,一个是故障的信息

faultinfo表

 planeinfo表

 

然后我现在想得到飞机在哪一年发生故障的次数最多。

首先我用左连接的方法得到了飞机每年发生的所有故障次数。

SELECT
YEAR (P.failureTime) year1,COUNT(F.failureExp) myCount
from planeinfo P LEFT JOIN faultinfo F ON P.failureNumber = F.failureNumber 
GROUP BY YEAR(P.failureTime)

然后我希望可以从这个基础上,得到myCount的最大值

于是

我用 了MAX(COUNT(F.failureExp))直接套用的法子

显然这个是不行的。

后来得到了一个链接的启发

我添加了一个条件语句 HAVING COUNT(F.failureExp) = MAX(myCount)

形成了

然而查询为空?

百思不得其解,百度无果寻找同事帮助得到了

SELECT
	xxx.year1,
	MAX(xxx.myCount)
FROM
	(
		SELECT
			YEAR (P.failureTime) year1,
			COUNT(F.failureExp) myCount
from planeinfo P LEFT JOIN faultinfo F ON P.failureNumber = F.failureNumber 
GROUP BY YEAR(P.failureTime) )xxx;

由上方查询结果可知,这个语句得到的结果是正确的。

这段语句的意思是

#查询一个叫xxx表中的year1字段和xxx表中myCount字段的最大值
SELECT
	xxx.year1,
	MAX(xxx.myCount)

#xxx来自于下面的select
FROM
	(
        #查找我本来的表planeinfo ,faultinfo中的数据
        #获取表中的年份和每年的故障总数 
        #并将查询的年份设置别名year1, 查询的总故障数设置别名myCount
		SELECT
			YEAR (P.failureTime) year1,
			COUNT(F.failureExp) myCount

#用到了左连接查询得到结果
from planeinfo P LEFT JOIN faultinfo F ON P.failureNumber = F.failureNumber 

#将结果按年份进行分组
GROUP BY YEAR(P.failureTime) )xxx;//xxx是开头的xxx

#这里用到了一个方法将第二个select查询的结果作为一个独立的表
#这个表被我们自定义名为xxx
#xxx的字段year1和myCount也是我们自定义的别名

#然后就顺理成章的就这样成功啦
#撒花

主要意思就是将开始的查询结果自定义成一个表,

然后根据自定义的字段别名和字段表别名进行查询寻找最大值

所以模板大概就是

SELECT
	自定义表名.字段别名
FROM
	(
		SELECT
			字段名 别名
from 表名
GROUP BY 字段名 )自定义表名;



#表的范围就是()中的范围

可能这就是所谓的inner query叭?

  • 7
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值