我有以下数据:
Date ID Type Cost
May 01 a A 1
May 01 b A 2
May 01 c B 3
May 01 d B 4
May 02 e A 5
May 02 f A 6
May 02 g B 7
May 02 h B 8
我想要一个显示的查询
Date Type CostPercentage
May 01 A (1+2) / (1+2+3+4)
May 01 B (3+4) / (1+2+3+4)
May 02 A (5+6) / (5+6+7+8)
May 02 B (7+8) / (5+6+7+8)
我目前拥有的是
select Date, Type, sum(cost)
from mytable
group by Date, Type
我真的很想显示百分比,但这将涉及除掉另一个本身就是聚合的数字。
我应该怎么做?
已编辑以反射(reflect)我的实际问题。我之前过度简化了它。
最佳答案
您可以使用子查询:
select dt.Date
, dt.Type
, SUM(dt.Cost) as DayTypeTotal
, (select SUM(Cost) from @t d where d.Date = dt.Date) as DayTotal
, 100.0 * SUM(dt.Cost) /
(select SUM(Cost) from @t d where d.Date = dt.Date) as Percentage
from @t dt
group by
dt.Date
, dt.Type
链接到 working example @odata .
关于mysql - 如何构造具有不同聚合的 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5244837/