こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

mysql いろんな条件

mysql いろんな条件


下記のようなテーブルより

table1
3,60,,,,,テスト1,科目A
4,59,,,,,テスト1,科目B
3,60,,,,,テスト1,科目A
1,80,,,,,テスト1,科目B
3,60,,,,,テスト1,科目A
4,59,,,,,テスト1,科目B
5,23,,,,,テスト1,科目A
5,23,,,,,テスト1,科目B
7,13,,,,,テスト1,科目A

table2
1,80,,,,,テスト1,科目B
3,60,,,,,テスト2,科目A
4,59,,,,,テスト2,科目B
3,60,,,,,テスト2,科目A
1,80,,,,,テスト2,科目B
3,60,,,,,テスト2,科目A
4,59,,,,,テスト2,科目B
5,23,,,,,テスト2,科目A
5,23,,,,,テスト2,科目B
7,13,,,,,テスト2,科目A
1,80,,,,,テスト2,科目B



結果1
テスト1,2,0,3,5
テスト2,2,0,3,5

結果2
科目A,0,0,6,4
科目B,4,0,0,6

現在
select count(*) from table1
where col7 = 'テスト1' and col1 = 1

select count(*) from table1
where col7 = 'テスト1' and col1 = 2

select count(*) from table1
where col7 = 'テスト1' and col1 = 3

select count(*) from table1
where col7 = 'テスト1' and col1 >3

このように1つ1つできていているのですが、
まとめてできる方法を知らないです。

また、1つずつやるとその分時間がかかります。

さらに1つのテーブルのみでしかやり方を知りません。

上記のようなテーブルから
結果1
テスト1,2,0,3,5
テスト2,2,0,3,5

結果2
科目A,0,0,6,4
科目B,4,0,0,6

このようなテーブルにする方法を教えてください

投稿日時 - 2019-03-06 17:33:09

QNo.9594277

困ってます

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

【ちょいと厳しい指摘だったかも】と反省して

要は、

1、table1で、テスト1という名目で、(col7 = 'テスト1' and col1 = 1)が成立する総数、(col7 = 'テスト1' and col1 = 2)が成立する総数、(col7 = 'テスト1' and col1 = 3)が成立する総数、(col7 = 'テスト1' and col1 > 3)が成立する総数を求めたい。

2、table2で、テスト2という名目で、(col7 = 'テスト2' and col1 = 1)が成立する総数、(col7 = 'テスト2' and col1 = 2)が成立する総数、(col7 = 'テスト2' and col1 = 3)が成立する総数、(col7 = 'テスト2' and col1 > 3)が成立する総数を求めたい。

3、1と2を一つのSQL文で求めたい。

と、考え方を整理してもらうのが、先の指摘の目的。で、ここまで書いたら、もはや書くべきSQL文は見えてきたと思いますよ。

SELECT
  "テスト1" AS テスト名,
  SUM(ABS([テスト名]='テスト1' And [番号]=1)) AS 1,
  SUM(ABS([テスト名]='テスト1' And [番号]=2)) AS 2,
  Sum(ABS([テスト名]='テスト1' And [番号]=3)) AS 3,
  Sum(ABS([テスト名]='テスト1' And [番号]>3)) AS 4
FROM table1
UNION
SELECT
  "テスト2" AS テスト名,
  SUM(ABS([テスト名]='テスト2' And [番号]=1)) AS 1,
  SUM(ABS([テスト名]='テスト2' And [番号]=2)) AS 2,
  Sum(ABS([テスト名]='テスト2' And [番号]=3)) AS 3,
  Sum(ABS([テスト名]='テスト2' And [番号]>3)) AS 4
FROM table2;

>上記のようなテーブルにするには?

 それは、無用。だって、SQL文一発だから。まあ、ちょいと厳しい指摘は、その真意を理解されて・・・

投稿日時 - 2019-03-06 19:57:06

ANo.2

【確認】table2には、テスト1はないのでは・・・

投稿日時 - 2019-03-06 19:09:02

ANo.1

【お願い】自分だけが分かっているのは拙い!

 まず、テーブル名も列名もなし。で、訳の分からないデーブルをこうしたい。これじゃー、考える気もしない。で、結果の列名も書かなきゃ―。回答者は、イメージできない。少なくとも頭脳明晰でない私にはチンプンカンプンですよ。もうちょっと、回答者がイメージしやすいように問題を整理して再質問をしたがいいですね。それに、求める結果が違うような気がしますよ。

投稿日時 - 2019-03-06 18:53:08

あなたにオススメの質問