1

次のようなテーブル設定があります。

fruit1 | fruit2 | fruit3 | fruit4 | number1 | number2 | number3 | number4
--------------------------------------------------------------------------
apple  | orange | banana |  berry |    5    |    2    |    1    |    4   
orange | banana | apple  |  berry |    3    |    2    |    5    |    2
berry  | banana | orange |  apple |    1    |    2    |    5    |    2

各果物が各数字である回数をカウントするには、MySQL クエリが必要です。したがって、次のようになります。

Fruit | 5's | 4's | 3's | 2's | 1's 
-----------------------------------
Apple | 2   | 0   | 0   | 1   | 0 
Banana| 0   | 0   | 1   | 1   | 1
...

JW は私を大いに助けてくれましたが、JW のソリューションから今必要なものに移行する方法がわかりません。
特定の数の場合にカウントするMySQLクエリを理解するのに助けが必要

4

1 に答える 1

5

コメントで最大値が 5であると述べたので、以前の質問から使用したピボット バージョンをcaseここに示します。

SELECT fruit,
       SUM(CASE WHEN num = 5 THEN NumberOfInstance ELSE 0 END) `5's`,
       SUM(CASE WHEN num = 4 THEN NumberOfInstance ELSE 0 END) `4's`,
       SUM(CASE WHEN num = 3 THEN NumberOfInstance ELSE 0 END) `3's`,
       SUM(CASE WHEN num = 2 THEN NumberOfInstance ELSE 0 END) `2's`,
       SUM(CASE WHEN num = 1 THEN NumberOfInstance ELSE 0 END) `1's`
FROM
      (
        SELECT fruit, num, COUNT(*) NumberOfInstance
        FROM 
        (
          SELECT fruit1 fruit, number1 num FROM table1
          UNION ALL
          SELECT fruit2 fruit, number2 num FROM table1
          UNION ALL
          SELECT fruit3 fruit, number3 num FROM table1
          UNION ALL
          SELECT fruit4 fruit, number4 num FROM table1
        ) s 
        GROUP BY fruit, num
      ) s
GROUP BY fruit;
于 2012-12-30T08:04:48.853 に答える