下面是我的sql代码:
SELECT
v.veh_manufname AS "Manufacturer Name",
COUNT(o.off_no) AS "Total No. of Offences"
FROM
VEHICLE v JOIN OFFENCE o ON v.veh_vin = o.veh_vin
GROUP BY
v.veh_manufname
运行上述sql代码将返回:
Manufacturer Name Total Offences
Audi 3
Honda 1
Mack 3
Kia 1
Mercedes Benz 1
Ferrari 4
Yamaha 1
BMW 2
Mini 1
Toyota 1
Harley Davidson 1
Mazda 4
如何以及在何处放置max aggregate函数,该函数将只提供具有最大违规次数的记录。
所需输出为:
Manufacturer Name Total Offences
Ferrari 4
Mazda 4
2条答案
按热度按时间nr9pn0ug1#
一个简单的方法是
RANK
:我们还可以使用子查询来仅限制具有最大违规次数的车辆:
如果希望直接修改当前查询,而不使用cte,可以在
HAVING
条款:pexxcrt22#
有一种不用子查询的方法可以做到这一点,但有一个问题:
如果有两个或多个制造商的违规次数相同,会怎样?
这个
RANK()
函数是有用的,或者您可以使用ROW_NUMBER()
在子查询中:这将给出一个结果,其中将显示违规次数最多和最近违规次数最多的制造商。