我有一个包含10行的表(示例),其中包含place_name的列,每个位置的5天数据(day1,day2,...,day5),以及5的总和列(TotalSum)天。开头的TotalSum充满了空值。
place_name | day1 | day2 | day3 | day4 | day5 | TotalSum
PlaceA | 1 | 1 | 1 | 1 | 1 | NULL
我有一个更新声明,总结五天,并将它们放入10个地点中每个地点的TotalSum列。
update sample set sample.TotalSum = day1+day2+day3+day4+day5;
然后我想选择具有最大TotalSum值的位置(place_name)。我一直在尝试使用以下行:
SELECT place_name, MAX(TotalSum) AS MAXsum FROM sample;
代码不起作用,并提出错误说,
" Column' sample.place_name'在选择列表中无效,因为它不包含在聚合函数或GROUP BY子句中。"
如果我执行下面的代码,那么我得到的只是MAXsum值,没有别的。
SELECT MAX(TotalSum) AS MAXsum FROM sample;
使用Microsoft SQL Server Management Studio,2014。
答案 0 :(得分:2)
您收到此消息的原因是您正在尝试聚合列TotalSum
,但您还有一个非聚合列place_name
。但是您没有在GROUP BY
子句
试试这个:
SELECT place_name, MAX(TotalSum) AS MAXsum
FROM sample
GROUP BY place_name
如果您希望查询返回最大MAX(TotalSum)的place_name,那么您需要这样做:
SELECT TOP 1 place_name, MAX(TotalSum) AS MAXsum
FROM sample
GROUP BY place_name
ORDER BY MAXsum DESC