SQL Select 语句未返回所需的列
SQL Select statement not returning desired columns
我有一个包含 10 行的 table(样本),其中包含 place_name 列,每个位置有 5 天的数据(第 1 天、第 2 天、...、第 5 天),和 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;
然后我想 select 具有最大 TotalSum 值的位置 (place_name)。我一直在尝试使用以下行:
SELECT place_name, MAX(TotalSum) AS MAXsum FROM sample;
该代码不起作用并给出错误提示,
"Column 'sample.place_name' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause."
如果我执行下面的代码,那么我得到的只是 MAXsum 值,没有别的。
SELECT MAX(TotalSum) AS MAXsum FROM sample;
在 Microsoft SQL 服务器管理工作室工作,2014 年。
您收到此消息的原因是您正在尝试聚合列 TotalSum
,但您还有一个非聚合列 place_name
。但您没有定义可以在 GROUP BY
子句
中聚合列的组
试试这个:
SELECT place_name, MAX(TotalSum) AS MAXsum
FROM sample
GROUP BY place_name
如果您希望查询 return 具有最大 MAX(TotalSum) 的 place_name 那么您需要这样做:
SELECT TOP 1 place_name, MAX(TotalSum) AS MAXsum
FROM sample
GROUP BY place_name
ORDER BY MAXsum DESC
我有一个包含 10 行的 table(样本),其中包含 place_name 列,每个位置有 5 天的数据(第 1 天、第 2 天、...、第 5 天),和 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;
然后我想 select 具有最大 TotalSum 值的位置 (place_name)。我一直在尝试使用以下行:
SELECT place_name, MAX(TotalSum) AS MAXsum FROM sample;
该代码不起作用并给出错误提示,
"Column 'sample.place_name' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause."
如果我执行下面的代码,那么我得到的只是 MAXsum 值,没有别的。
SELECT MAX(TotalSum) AS MAXsum FROM sample;
在 Microsoft SQL 服务器管理工作室工作,2014 年。
您收到此消息的原因是您正在尝试聚合列 TotalSum
,但您还有一个非聚合列 place_name
。但您没有定义可以在 GROUP BY
子句
试试这个:
SELECT place_name, MAX(TotalSum) AS MAXsum
FROM sample
GROUP BY place_name
如果您希望查询 return 具有最大 MAX(TotalSum) 的 place_name 那么您需要这样做:
SELECT TOP 1 place_name, MAX(TotalSum) AS MAXsum
FROM sample
GROUP BY place_name
ORDER BY MAXsum DESC