【问题标题】:Get counts of each sub-group within main获取 main 中每个子组的计数
【发布时间】:2019-04-02 22:52:27
【问题描述】:

我想获取出现在主组中的每个子组的计数。

鉴于以下情况:

| Clothing    | Colour
-----------------------
| Shirt       | black   
| Shirt       | black  
| Shirt       | black
| Shirt       | yellow 
| Shoes       | yellow
| Shoes       | yellow
| Shoes       | black

我想要的输出是:

| A                    | B
---------------------------
| Shirt_Blacks         | 3 
| Shirt_Yellows        | 1
| Shoes_Blacks         | 1
| Shoes_Yellows        | 2

编辑:输出格式 2:

| Clothing       | Black | Yellow
-----------------------------------
| Shirt          | 3     | 1
| Shoes          | 1     | 2

尝试了以下方法,但没有成功:

SELECT COUNT(Colour) 
FROM [randomtable]
Group By Clothing

【问题讨论】:

    标签: sql sql-server tsql group-by count


    【解决方案1】:

    使用聚合:

    SELECT CONCAT(Clothing, '_', Colour) A, COUNT(*) B
    FROM mytable
    GROUP BY Clothing, Colour
    

    Demo on DB Fiddle

    一个 |乙 :----------- | -: 衬衫_黑色 | 3 鞋_黑色 | 1 衬衫_黄色 | 1 鞋_黄色 | 2

    如果您希望旋转结果集,那么:

    SELECT 
        Clothing,
        SUM(CASE WHEN Colour = 'Black' THEN 1 ELSE 0 END) Black,
        SUM(CASE WHEN Colour = 'Yellow THEN 1 ELSE 0 END) Yellow
    FROM mytable
    GROUP BY Clothing
    

    【讨论】:

    • 谢谢!请再问一个问题。我在输出格式方面对我的帖子进行了编辑。我必须如何调整查询以生成输出格式 2?再次感谢队友! :-)
    【解决方案2】:

    您可以按 concat(clothing, '_', colour) 分组:

    SELECT
      concat(clothing, '_', colour) A, 
      COUNT(*) B
    FROM [randomtable]
    Group By concat(clothing, '_', colour) 
    

    【讨论】:

      【解决方案3】:
      SELECT Clothing+'_'+Colour A, COUNT(*) B
          FROM [randomtable]
      GROUP BY Clothing+'_'+Colour
      
      select * from [randomtable]
          pivot
      (count(colour) for colour in (black,yellow))AS piv
      

      【讨论】:

      • 欢迎来到stackoverflow。通过解释它如何解决问题,您的答案将得到改善。请参阅 stackoverflow.com/help/how-to-answer
      猜你喜欢
      • 1970-01-01
      • 2014-06-30
      • 1970-01-01
      • 2023-03-15
      • 2016-10-11
      • 2015-07-08
      • 1970-01-01
      • 2020-10-01
      • 2019-05-06
      相关资源
      最近更新 更多