- ベストアンサー
クロス集計のSQL
- クロス集計とは、複数の項目を対象にして統計データを集計する方法です。
- クロス集計のSQLを使えば、性別と血液型といった複数の項目を組み合わせて集計が可能です。
- サイトで解説されているクロス集計のSQLを探すことで、より詳しい解説を得ることができます。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
#1回答者です。 MySQL 5.0以降が前提となりますが、以下のSQLを考えてみました。 create table person (name varchar(10), sex tinyint, blood varchar(2)); insert into person values ('川口',1,'A'), ('宮本',1,'B'), ('加地',1,'A'), ('三都主',1,'A'), ('中田英',1,'O'), ('稲本',1,'AB'), ('中村',1,'?'), ('高原',1,'A'), ('柳沢',1,'B'), ('玉田',1,'A'), ('巻',1,'AB'), ('川上',2,'O'), ('澤',2,'A'); insert into person values ('川口',2,'A'), ('宮本',2,'B'), ('加地',2,'A'); select sex, sum(A) as A, sum(B) as B, sum(AB) as AB, sum(O) as O, sum(etc) as etc from ( select sex, case when blood='A' then count(*) else 0 end as A, case when blood='B' then count(*) else 0 end as B, case when blood='AB' then count(*) else 0 end as AB, case when blood='O' then count(*) else 0 end as O, case when blood not in('A','B','AB','O') then count(name) else 0 end as etc from person group by sex,blood ) as x group by sex order by sex ;
その他の回答 (1)
- chukenkenkou
- ベストアンサー率43% (833/1926)
何が何でも、美しくなくて一つのSQLでやりたいですか? 分かりやすく、美しくなるなら、複数のSQLに分かれてもいいですか?
お礼
ありがとうございました たぶんこれでできるとおもいます まずは、お礼を、と感謝を申し上げます