使用3上的Count

时间:2015-10-04 16:00:23

标签: mysql count

假设我有一个服装库存表,其中包含类型,颜色,尺寸,我在这三个字段上执行了一组以获取每个字段的数量,但随后想要获得每种类型和颜色的每种尺寸的百分比。我用三个字段的原始计数(*)做了一个sql小提琴,并想知道我是否可以为每个类型和颜色返回%的大小。

http://sqlfiddle.com/#!9/c7a4d/4

例如在显示的sql小提琴中,我得到以下黑裤子:

  • 裤子,黑色,大,5
  • 裤子,黑色,中,5
  • 裤子,黑色,小,10

而我想要

  • 裤子,黑色,大,5,25%
  • 裤子,黑色,中,5,25%
  • 裤子,黑色,小,10,50%

2 个答案:

答案 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