假设我有一个服装库存表,其中包含类型,颜色,尺寸,我在这三个字段上执行了一组以获取每个字段的数量,但随后想要获得每种类型和颜色的每种尺寸的百分比。我用三个字段的原始计数(*)做了一个sql小提琴,并想知道我是否可以为每个类型和颜色返回%的大小。
http://sqlfiddle.com/#!9/c7a4d/4
例如在显示的sql小提琴中,我得到以下黑裤子:
而我想要
答案 0 :(得分:1)
您可以进行聚合和加入:
Select c.Type, c.Color, c.Size,
Count(*), Count(*) / cc.cnt as proportion
from Clothing c join
(select c.type, c.color, count(*) as cnt
from clothing c
group by c.type, c.color
) cc
on cc.type = c.type and cc.color = c.color
group by c.Type, c.Color, c.Size, cc.cnt
having Count(*) > 1
目前还不清楚外部COUNT(*)
条件如何与总数相符,所以我把它从子查询中删除了。
答案 1 :(得分:0)
您可以使用从整个表中选择cross join
的查询count(*)
查询,并将计数除以获得百分比:
SELECT Type, Color, Size, COUNT(*), COUNT(*) / total * 100 AS percentage
FROM Clothing
CROSS JOIN (SELECT COUNT(*) AS total FROM Clothing) t
GROUP BY Type, Color, Size