GROUP BY句を使用せずに検索結果のグループ単位に件数を取得するには、
COUNT~OVER(PARTITION BY ~)句を使用します
サンプル
以下のテーブルを例とします。
USER_CD | USER_NM | DEPT |
---|---|---|
101 | 佐藤 | 営業部 |
102 | 田中 | 開発部 |
103 | 小林 | 総務部 |
104 | 池田 | 営業部 |
105 | 山下 | 開発部 |
106 | 阿部 | 開発部 |
例)dept列単位の件数を取得する
1 2 3 4 5 6 7 |
SELECT user_cd ,user_nm ,dept ,COUNT(*) OVER(PARTITION BY dept) AS cnt FROM m_user |
- (結果)
- user_cd user_nm dept cnt -------- --------- -------- ----- 101 佐藤 営業部 2 102 田中 開発部 3 103 小林 総務部 1 104 池田 営業部 2 105 山下 開発部 3 106 阿部 開発部 3
解説
- PARTITION BY句に複数列を条件としたい場合はカンマ区切りで指定すればOKです。
例)COUNT(*) OVER(PARTITION BY col1, col2, col3)