
以下のようなDB内に顧客id(ユニーク)とhob1,hob2,hob3のようなカラムがありまして、hob1,hob2,hob3には任意で趣味を表す値が入っております。
【hoge_db】
id | hob1 | hob2 | hob3
1 | 1 | 2 | 3
2 | 2 | 3 | NULL
3 | 3 | NULL | NULL
3 | NULL | NULL | NULL
・・・
【SELECTしたい値】
趣味1:1名
趣味2:2名
趣味3:3名
この各趣味を表す値に対する顧客数を求めたいのですが、3つのカラム全てに対してCOUNTをする方法が分かりません。。
どうかSQLにお強い方、お力を貸して頂けないでしょうか?
No.2ベストアンサー
- 回答日時:
どうして、わざわざこんな扱いにくいテーブルにしているのでしょうかね。
。。select
hob,count(hob)
from
(
select hob1 as hob from hoge_db where hob1 is not null
union all
select hob2 as hob from hoge_db where hob2 is not null
union all
select hob3 as hob from hoge_db where hob3 is not null
) as x
group by hob
order by hob
確かに扱い難いテーブル設計でした・・・
教えて頂いたunionで結合してからcountする方法で無事値が取り出せました!有難うございました!
No.1
- 回答日時:
「1発でやろう」と考えると失敗します。
趣味が3個あるのだから、別々に求める必要があります。
コード1の数を求めるクエリは以下のようになります。
SELECT 1 AS shumi,
SUM(CASE WHEN 1 IN (hob1,hob2,hob3) THEN 1 ELSE 0 END) AS cnt
FROM hoge_db GROUP BY shumi
同様に2、3を求めて結合します。よって、解は以下の通り。
SELECT 1 AS shumi,
SUM(CASE WHEN 1 IN (hob1,hob2,hob3) THEN 1 ELSE 0 END) AS cnt
FROM hoge_db GROUP BY shumi
UNION
SELECT 2 AS shumi,
SUM(CASE WHEN 2 IN (hob1,hob2,hob3) THEN 1 ELSE 0 END) AS cnt
FROM hoge_db GROUP BY shumi
UNION
SELECT 3 AS shumi,
SUM(CASE WHEN 3 IN (hob1,hob2,hob3) THEN 1 ELSE 0 END) AS cnt
FROM hoge_db GROUP BY shumi
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- MySQL `picture` varchar(255) のコマンドで間違いないでしょうか? 1 2022/11/21 04:08
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
- MySQL PHPとMySQLを使った掲示板の作り方 1 2022/06/02 13:00
- PHP データベースを用いたwebページ 1 2022/12/27 20:12
- MySQL エラー 1068 (42000): 複数の主キーが定義されていますエラー 2 2022/11/17 04:36
- PHP PHPでCSVを出力するさいに、ループの中で前の行の値を変更したい 3 2022/10/27 17:44
- Access(アクセス) アクセス テーブルの空白を変数に置換するボタンが作りたい 4 2022/07/08 11:19
- プラモデル・鉄道模型・模型製作 ねたみでしょうか 5 2023/08/27 17:40
- MySQL my_itemsテーブルのIDにAUTO_INCREMENT を追加ができるかで 1 2023/01/03 09:09
- Excel(エクセル) Excelでnullになるような式のセルをマクロで空白行と認識させるにはどうすればいいですか? 3 2023/03/13 13:42
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
pg_restoreでエラー
-
クラスタ構成について教えて下...
-
MS-DOSについて
-
PHP-ACEESか PHP-MySQL-ACCESSか
-
データベースの更新は手動でや...
-
ディスク上のサイズの乖離が大...
-
SJISのDBは作れますか?
-
VB初心者ですm(__)m
-
スキャンディスクをするとメモ...
-
バキュームをクーロンから実行
-
ACCESS MSDE フォーム上から...
-
キャッシュしたクエリを確認したい
-
エラーについて(更新)
-
INSERT 0 1が大量に表示されて...
-
SPSS Student Version 13.0J...
-
レンタルサーバーのPostgreSQL...
-
フォーマットについて。
-
ガス給湯器のエラーコードにつ...
-
SQLServerへの接続子による違い...
-
ヤフーショッピングでPayPay支...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
複数カラムを跨いだCOUNTができ...
-
pg_restoreでエラー
-
ここでいう「データソース名」...
-
ディスク上のサイズの乖離が大...
-
Windows上のPostgreSQLの完全削...
-
oracle spool SJIS → UTF-8
-
Windows版 pg_dumpの結果をログ...
-
新規作成したPostgresqlデータ...
-
Query OK, 0 rows affected
-
PostgreSQLについて教えてくだ...
-
ファイルに記述されている複数...
-
CSVファイルをBULK INSERTでSQL...
-
createdbでいきなりつまづいて...
-
ACCESSのフォームだけを起動す...
-
ヤフーショッピングでPayPay支...
-
階層型データベースとVSAM...
-
shellからpostgresqlへの変数の...
-
アクセスで、OLEサーバーも...
-
psql でのエラー出力について
-
SJISのDBは作れますか?
おすすめ情報