我在处理sql fiddle with group by子句,并根据临时表“a”的结果查找百分比。
这是小提琴。
http://sqlfiddle.com/#!9/faf2f/6959号
我确实遇到过很多不同的方法来实现这一点,比如使用union all,但我的问题是为什么这个查询只返回一行而不是两行。
列表项
数据:
TotalCost
230
200
100
1254
查询:
SELECT Category, Cnt , Cnt/sum(Cnt) as percent from (
SELECT
Case When TotalCost < 301 Then '0-300'
Else ' > 300' End as Category,
count(*) as cnt
FROM Cars
group by Category
) A
;
预期结果:
Category Cnt percent
0-300 3 75
> 300 1 25
实际结果:
Category Cnt percent
> 300 1 25
1条答案
按热度按时间xnifntxz1#
你可以试着按
case when
而不是别名。其次,您的总计数需要进行所有计数,这样您就可以进行子查询。
像这样。
或者你可以用
CROSS JOIN
得到总数。sqlfiddle公司
结果: