【发布时间】:2016-01-14 05:37:49
【问题描述】:
我是窗口函数的新手。这是包含 4 种水果的原始表格。
fruit quantity
orange 100
banana 27
banana 20
orange 5
melon 5
apple 1
banana 10
banana 4
banana 36
banana 86
banana 47
apple 32
banana 7
banana 5
banana 3
是否可以将其转换为每种水果占所有物品总量的百分比?这是我想要的:
fruit total percentage
apple 33 9%
banana 245 63%
orange 105 27%
melon 5 1%
这是我正在尝试的代码,但它给了我一个错误:
SELECT fruit
, SUM(quantity) / SUM(quantity) OVER () * 100
FROM fruit_inventory
GROUP BY fruit
如果我撤消 GROUP BY 并删除第一个 SUM(quantity),则会得到多个如下所示的记录:
fruit quantity percentage
apple 1 0%
apple 32 8%
banana 27 7%
banana 20 5%
banana 10 3%
banana 4 1%
banana 36 9%
banana 86 22%
banana 47 12%
banana 7 2%
banana 5 1%
banana 3 1%
melon 5 1%
orange 100 26%
orange 5 1%
【问题讨论】:
-
在 OVER 子句中添加 ORDER BY 水果
-
那仍然失败。我应该删除一些东西吗?
-
这是什么错误,可能会在添加一些括号后尝试乘以 100
-
列 'quantity' 在选择列表中无效,因为它不包含在聚合函数或 GROUP BY 子句中。
-
我删除了 * 100 并没有改变。
标签: tsql sql-server-2012 aggregate partition