我有一个表(交易),其列有'TransID','StoreName'和'Amount'。 列出的商店数量为“0”。
TRANSACTIONS
TransID StoreName Amount
1 Able Store 45
2 Baker Store 23
3 Charlie Store 9
4 Baker Store 0
5 Charlie Store 0
6 Charlie Store 0
我需要生成一个查询来告诉我每个不同的StoreName, <百分比是多少? $ 0.01至>每个商店0.01美元并输出。
在上表中,结果应如下所示:
Able Store 100%
Baker Store 50%
Charlie Store 33%
我已经尝试了COUNT,GROUP BY但是我无法弄清楚如何做到这一点......或者如果它甚至可能......或者我可能不是那么尖锐......
非常欢迎任何建议。我还有一些毛发可以拔出来......
如果我想每月输出结果怎么办? 商店MONTH1 MONTH2 MONTH3 ...... 能够存储100%50% 贝克商店50%0% 查理商店33%75%
答案 0 :(得分:3)
此查询可以正常工作,而不是负数值。
select storename, round(avg(sign(amount)) * 100, 2)
from transactions group by storename;
如果可能存在负数且您想要找到正数百分比,请使用此查询:
select storename, round(avg(case when amount > 0 then 1 else 0 end) * 100, 2)
from transactions group by storename;
如果可能存在负数且您想要找到正数&&的百分比否定,请使用此查询:
select storename, round(avg(abs(sign(amount))) * 100, 2)
from transactions group by storename;
答案 1 :(得分:1)
select storename,
sum(case when amount <> 0 then 1 end) * 100 / count(*) as percenate
from transactions
group by storename