• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:複数のフィールドから、合計数を求めたい)

複数フィールドからの合計数を求める方法

このQ&Aのポイント
  • 複数のフィールドから、ユニークな文字列でグループ分けし各々の合計数を数える方法について説明します。
  • 例えば、テーブルにはid、s1、s2というフィールドがあり、s1とs2からユニークな文字列でグループ分けをし、各々の合計数を求めたい場合、どのようなクエリを使用すればよいかについても解説します。
  • MySQL 5.1.22の場合、SELECT句に複数のフィールドを指定してグループ化するクエリを使用することで、複数フィールドからの合計数を求めることができます。

質問者が選んだベストアンサー

  • ベストアンサー
  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.3

#1、#2です。間違えてましたね、すみません。 「Aを2と読み替える」と読んでました。 S1を見るSelectと、S2を見るSelectをUNION ALLしてから Group BYしてください。 select s, count(s) from (  SELECT s1 as s FROM table  union all  SELECT s2 as s FROM table ) group by s

atse
質問者

お礼

ご回答ありがとうございます。 探していたのはまさにこのような方法でした。 そのままだと、 Every derived table must have its own alias というエラーが出たので、両方を見た結果に名前を付けることで解決できました。 select s, count(s) from(~) as hoge group by s (as hoge 部分) 無事解決です。 本当にありがとうございました!

その他の回答 (2)

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.2

> (Aは2 Cは1 Dは2 Gは2 といったデータ) そこでしたか。 OracleにはDecode関数がありますが、MySQLには無い(ハズ) 「Mysql decode」をキーワードに検索サイトで当たってみてください。 解決方法サイトがヒットします。

atse
質問者

補足

ご回答頂きありがとうございます。 googleで検索してみましたが、こちらの理解力がないのか、 Decode関数は、他でいうif文・switch文による条件結果により、 グループ名を返すだけのもの、となってしまうように受け取り、 それをどのように複数フィールドをまたいでのグループ分けに 使用できるのかが想像がつきませんでした。 よろしければ助言を頂ければ幸いです。

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

SELECT concat(s1, s2), COUNT(concat(s1, s2)) FROM table GROUP BY concat(s1, s2) だと、どうなります?

atse
質問者

補足

そのままconcatで連結した内容でグループ分けされます。 AD 1 AG 1 C 1 DG 1 質問内容に書いた内容だと、下記のようになることを望んでいます。 (Aは2 Cは1 Dは2 Gは2 といったデータ) A 2 C 1 D 2 G 2