SQLite 显示 SUM 占总 SUM 的百分比
SQLite showing a percentage of a SUM from total SUM
我有一个 table 需要一些费用。我想select类别(不重复),每个类别的费用总和,以及这笔费用占总费用的百分比。
前两件事我成功了,但总的来说我没有。我想是因为 GROUP BY.
SELECT SUM(Value), [Expense Category]
FROM expenses
WHERE Year = 2021
GROUP BY [Expense Category]
ORDER BY SUM(Value) DESC
我可以在这个 SELECT 中包含总金额吗?怎么样?
谢谢!
在这种情况下,您可以使用 window 函数
SELECT DISTINCT SUM(Value) over(partition by [Expense Category])/SUM(Value), [Expense Category]
FROM expenses
WHERE Year = 2021
GROUP BY [Expense Category]
或者在子查询中计算总和
SELECT [Expense Category], sum_/total_sum
(
SELECT SUM(Value) sum_, [Expense Category]
FROM expenses
WHERE Year = 2021
GROUP BY [Expense Category]
ORDER BY SUM(Value) DESC
) a
CROSS JOIN (SELECT SUM(Value) total_sum FROM expenses) b
您可以在查询中使用 window 函数 SUM()
来计算 table:
的总数 value
SELECT [Expense Category],
SUM(Value) sum_value,
100.0 * SUM(Value) / SUM(SUM(Value)) OVER () percentage
FROM expenses
WHERE Year = 2021
GROUP BY [Expense Category]
ORDER BY SUM(Value) DESC;
我有一个 table 需要一些费用。我想select类别(不重复),每个类别的费用总和,以及这笔费用占总费用的百分比。
前两件事我成功了,但总的来说我没有。我想是因为 GROUP BY.
SELECT SUM(Value), [Expense Category]
FROM expenses
WHERE Year = 2021
GROUP BY [Expense Category]
ORDER BY SUM(Value) DESC
我可以在这个 SELECT 中包含总金额吗?怎么样?
谢谢!
在这种情况下,您可以使用 window 函数
SELECT DISTINCT SUM(Value) over(partition by [Expense Category])/SUM(Value), [Expense Category]
FROM expenses
WHERE Year = 2021
GROUP BY [Expense Category]
或者在子查询中计算总和
SELECT [Expense Category], sum_/total_sum
(
SELECT SUM(Value) sum_, [Expense Category]
FROM expenses
WHERE Year = 2021
GROUP BY [Expense Category]
ORDER BY SUM(Value) DESC
) a
CROSS JOIN (SELECT SUM(Value) total_sum FROM expenses) b
您可以在查询中使用 window 函数 SUM()
来计算 table:
value
SELECT [Expense Category],
SUM(Value) sum_value,
100.0 * SUM(Value) / SUM(SUM(Value)) OVER () percentage
FROM expenses
WHERE Year = 2021
GROUP BY [Expense Category]
ORDER BY SUM(Value) DESC;