ah2*_*ise 0 sql sql-server group-by max
我理解为什么第一个查询需要 a GROUP BY
,因为它不知道将总和应用到哪个日期,但我不明白为什么第二个查询会出现这种情况。最终最大金额的值已包含在表中 - 它不是按原样计算的SUM
。谢谢
-- First Query
select
sum(OrderSales),OrderDates
From Orders
-- Second Query
select
max(FilmOscarWins),FilmName
From tblFilm
Run Code Online (Sandbox Code Playgroud)
它不是SUM
和MAX
需要GROUP BY
,而是未聚合的列。
如果你只写这个,你将得到一行,作为FilmOscarWins
整个表中列的最大值:
select
max(FilmOscarWins)
From
tblFilm
Run Code Online (Sandbox Code Playgroud)
如果任何一部电影获得最多的奥斯卡奖是 12 项,那么这一行会显示 12 项。但是可能有多部影片,所有影片都获得了 12 项奥斯卡奖,因此,如果我们要求获得FilmName
12 项奥斯卡奖,那么就没有单一的答案。
通过添加Group By
,我们从根本上改变了查询:它将为每个组返回一行,而不是为整个表返回一个数字- 在本例中,这意味着每部电影一行。
如果您确实想获得获得最多 12 项奥斯卡奖的所有电影的列表,则必须执行更复杂的操作,例如使用子查询首先查找单个数字 (12),然后查找所有匹配的行它:
select
FilmOscarWins,
FilmName
From
tblFilm
Where FilmOscarWins = (
select
max(FilmOscarWins)
From
tblFilm
)
Run Code Online (Sandbox Code Playgroud)