異なる列から、同じテーブルの複数のカウントを結合しますか?

ポール

簡単なはずなのに遅くて苦労しています。

たとえば、(オラクル12 dbで)次のようなさまざまなイベント中に、どのスタッフがバーでどの役割を果たしたかを表すテーブルがあります。

+----------+----------+-------+------------+----------+
| event_id | bar      | doors | cloak_room | keg_room |
+----------+----------+-------+------------+----------+
| 2        | bob      | bill  | john       | mary     |
+----------+----------+-------+------------+----------+
| 3        | bob      | bill  | mary       | kev      |
+----------+----------+-------+------------+----------+
| 4        | bob      | john  | louise     | mary     |
+----------+----------+-------+------------+----------+
| 5        | kyle     | kev   | sarah      | louise   |
+----------+----------+-------+------------+----------+
| 6        | jennifer | bob   | jay        | john     |
+----------+----------+-------+------------+----------+
| 7        | john     | bill  | mary       | steve    |
+----------+----------+-------+------------+----------+ 

そして、私は、全体として、次のように、各スタッフが働いたイベントの数を数えたいと思います。

+-------+--------+
| count | person |
+-------+--------+
| 4     | bob    |
+-------+--------+
| 4     | john   |
+-------+--------+
| 3     | bill   |
+-------+--------+
| 3     | mary   |
+-------+--------+
| 2     | kev    |
+-------+--------+
| 2     | louise |
+-------+--------+
| 1     | jay    |
+-------+--------+
| 1     | steve  |
+-------+--------+ 

ここで、bobのカウントは4であることがわかります。これは、bobが4つの異なるevent_idに関連付けられているためです。3つはバーテンダー、1つはドアマンです。

(2人のスタッフが同じ名前を持っておらず、誰も一度に2つの仕事をすることができないと仮定します)

どうすればよいですか?

1つの「役割」については明らかです:

select count(event_id), bar group by bar

しかし、完全結合と文字列連結なしで、すべての列に対してこれを行うためのエレガントな方法はありますか?

ありがとう!

バルバロスオザン

あなたはあり数えるネストされた内側のクエリで文字列の列で、その後、合計それらをアップし、ご希望に外の順序

SELECT sum(count) count, person
  FROM
(
 SELECT count(event_id) count, bar person FROM mytable GROUP BY bar UNION ALL
 --> P.S. Only aliasing as "person" is enough in this upper "select" for all 
 --> four "select" statements inside the parentheses.
 SELECT count(event_id)      , doors      FROM mytable GROUP BY doors UNION ALL
 SELECT count(event_id)      , cloak_room FROM mytable GROUP BY cloak_room UNION ALL
 SELECT count(event_id)      , keg_room   FROM mytable GROUP BY keg_room
)
GROUP BY person
ORDER BY 1 desc, 2;

COUNT   PERSON
   4    bob
   4    john
   3    bill
   3    mary
   2    kev
   2    louise
   1    jay
   1    jennifer
   1    kyle
   1    mary2
   1    sarah
   1    steve

SQLフィドルデモ

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

複数のテーブルから同じ列を結合します

分類Dev

mysqlの異なるテーブルからの複数の列を使用して結合します

分類Dev

同じ列名の異なるテーブルから複数のフィールドを選択/結合します

分類Dev

異なるテーブルの複数の列をカウントして合計します

分類Dev

MySQLは、結合を使用して複数のテーブルから行をカウントします

分類Dev

SQL:2つの異なるテーブルから2つの異なる列をカウントします

分類Dev

同じ列名を持つ2つの異なるテーブルからカウントし、同じ名前の場合はグループtehm

分類Dev

同じテーブルの複数の列の条件付きカウントを合計します

分類Dev

Mysqlは、複数のテーブルで異なる条件で同じデータの2つの異なるカウントを作成します

分類Dev

テーブルから複数の列の値をカウントします

分類Dev

結合とカウントを使用して複数のテーブルから選択する

分類Dev

2つのテーブル間で異なるカウント-外部結合を使用しますか?

分類Dev

範囲に基づいて、同じテーブルの2つの異なる列からカウントします

分類Dev

MySQLは、異なる列の同じテーブルからの複数値文字列を新しいテーブルに分割します

分類Dev

Mysql2つのテーブルからの同じ値を2つの異なるカウントとしてカウントする

分類Dev

カウントをGroupbyで異なるテーブルから1つの結果セットに結合します

分類Dev

異なる変数のテーブルから同じ値を取得します

分類Dev

複数のテーブルをマージし、同じ列をカンマ分割で結合します

分類Dev

Excelの数式-異なるテーブルからの複数の基準に基づいて範囲の一意のカウントを返します

分類Dev

Mysql、テーブルを結合し、異なる行からの複数の条件があります

分類Dev

同じテーブルの異なる列のカウントの合計

分類Dev

同じタイトルで異なるテーブルの2つの列を結合します

分類Dev

テーブルAからすべての行を選択し、同じ結果セットでテーブルBから複数の列を選択します

分類Dev

複数のテーブルからの結合をカウント

分類Dev

同じテーブルの別の列で一致するかどうかをカウントします

分類Dev

SQLの結合クエリを使用して、3番目のテーブルを持つ2つの異なるテーブルから2つの列のカウントを取得します

分類Dev

行の最後で同じテーブルから 2 カウントを合計します

分類Dev

MYSQL:結合せずに複数のテーブルから複数のカウントを返す

分類Dev

groupbyが必要な複数行の同じ列値のテーブルからトレンドを取得する方法

Related 関連記事

  1. 1

    複数のテーブルから同じ列を結合します

  2. 2

    mysqlの異なるテーブルからの複数の列を使用して結合します

  3. 3

    同じ列名の異なるテーブルから複数のフィールドを選択/結合します

  4. 4

    異なるテーブルの複数の列をカウントして合計します

  5. 5

    MySQLは、結合を使用して複数のテーブルから行をカウントします

  6. 6

    SQL:2つの異なるテーブルから2つの異なる列をカウントします

  7. 7

    同じ列名を持つ2つの異なるテーブルからカウントし、同じ名前の場合はグループtehm

  8. 8

    同じテーブルの複数の列の条件付きカウントを合計します

  9. 9

    Mysqlは、複数のテーブルで異なる条件で同じデータの2つの異なるカウントを作成します

  10. 10

    テーブルから複数の列の値をカウントします

  11. 11

    結合とカウントを使用して複数のテーブルから選択する

  12. 12

    2つのテーブル間で異なるカウント-外部結合を使用しますか?

  13. 13

    範囲に基づいて、同じテーブルの2つの異なる列からカウントします

  14. 14

    MySQLは、異なる列の同じテーブルからの複数値文字列を新しいテーブルに分割します

  15. 15

    Mysql2つのテーブルからの同じ値を2つの異なるカウントとしてカウントする

  16. 16

    カウントをGroupbyで異なるテーブルから1つの結果セットに結合します

  17. 17

    異なる変数のテーブルから同じ値を取得します

  18. 18

    複数のテーブルをマージし、同じ列をカンマ分割で結合します

  19. 19

    Excelの数式-異なるテーブルからの複数の基準に基づいて範囲の一意のカウントを返します

  20. 20

    Mysql、テーブルを結合し、異なる行からの複数の条件があります

  21. 21

    同じテーブルの異なる列のカウントの合計

  22. 22

    同じタイトルで異なるテーブルの2つの列を結合します

  23. 23

    テーブルAからすべての行を選択し、同じ結果セットでテーブルBから複数の列を選択します

  24. 24

    複数のテーブルからの結合をカウント

  25. 25

    同じテーブルの別の列で一致するかどうかをカウントします

  26. 26

    SQLの結合クエリを使用して、3番目のテーブルを持つ2つの異なるテーブルから2つの列のカウントを取得します

  27. 27

    行の最後で同じテーブルから 2 カウントを合計します

  28. 28

    MYSQL:結合せずに複数のテーブルから複数のカウントを返す

  29. 29

    groupbyが必要な複数行の同じ列値のテーブルからトレンドを取得する方法

ホットタグ

アーカイブ