在SQL中按另一列分组时,获取一列的SUM

tom*_*ung 9 sql

我有一个有3个字段的表

ID  Tax   State
0   .50   TX
1   .25   TX
2   .25   AZ
3   .25   AZ
4   .1    AL
Run Code Online (Sandbox Code Playgroud)

我想为每个州提取税金.

Tax   State
.75   TX
.5    AZ
.1    AL
Run Code Online (Sandbox Code Playgroud)

如何编写查询来执行此操作?

Mic*_*ski 19

这是一个非常基本的SUM()集合.我建议阅读关于聚合函数的RDBMS文档,GROUP BY因为这是非常基础的.

SELECT
  SUM(Tax) AS sumtax,
  State
FROM table
GROUP BY State
/* Looks like you want descending order */
ORDER BY SUM(Tax) DESC
Run Code Online (Sandbox Code Playgroud)

请注意,某些RDBMS(例如MySQL)将允许您在以下位置使用列别名ORDER BY:

ORDER BY sumtax DESC
Run Code Online (Sandbox Code Playgroud)

...其他人(如果我没记错的话,就像SQL Server一样)不会,你也必须使用聚合值.

编辑: 我刚刚检查过,实际上SQL Server似乎确实允许使用别名ORDER BY.很确定你不能在GROUP BY虽然使用别名...