2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【SQL】count()で数えた列をさらにcount()する方法

Posted at

はじめに

SQLでcount()した列をさらにcount()したい場面に遭遇しました。
例を出しながら、備忘録としてまとめます。

内容

サンプルの表データは以下の通りです
営業メンバーに現在の担当の顧客を登録してもらうような状況で使う表を想定しています。

名前 所属 担当顧客 登録日 ・・
1 Aさん 製造本部 会社a 2023/〇〇/〇〇 ・・
2 Aさん 製造本部 会社b 2023/〇〇/〇〇 ・・
3 Bさん 流通本部 会社c 2023/〇〇/〇〇 ・・
4 Cさん 金融本部 会社d 2023/〇〇/〇〇 ・・
6 Aさん 製造本部 会社f 2023/〇〇/〇〇 ・・
7 Bさん 流通本部 会社g 2023/〇〇/〇〇 ・・
・・
・・

それぞれのメンバーが何件の顧客を登録しているのか確認するSQL文は以下になります。

SELECT 名前, count(*) 件数
FROM サンプル表 
group by 名前

得られる結果のイメージは以下です。

名前 件数
Aさん 5
Bさん 3
Cさん 2

さらに、〇件登録しているメンバーが何人なのか確認する場合のSQLは以下のようになります

select 件数,count(*) 件数の件数
from (
SELECT 名前, to_char(count(*)) 件数
FROM サンプル表
group by 名前
)
group by 件数
order by 件数 ASC
件数 件数の件数
1 5
2 3
3 2
4 4

★ポイント★

・fromの後をサブクエリにしていること
・count()で取得した値をto_char()関数で文字列化していること

この結果から、1件の登録をしている営業メンバーが5名。2件登録している営業メンバーが3名。のように〇件登録している営業メンバーが何名ずついるのかを知ることが出来ます。

まとめ

count()で数えた列をさらにcount()する時には数値を文字列化することがポイントだという事が分かりました。今回のようなSQL文を書くのに多く時間がかかってしまったので、忘れないようにQiitaに記事を残しました。どこかのタイミングで参考になればと思います。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?