レッツは、私は、テーブル格納し、調査結果を持っていると言うと、構文は次のようになります。SQLに複数の列の値の出現を数える方法はありますか?
id | q1 | ..... | q30 | created_at
created_at
は、タイムスタンプ列で、他のすべての整数フィールドです。
今月の調査結果が必要です。一つの質問のためにそれを行うために、私が持っている:データがさらに計算し、最終的にいくつかのデータ表示のための私のPHPスクリプトに渡されます
year | month| q1 | occurence
2016 | 11 | 1 | 10
2016 | 11 | 2 | 15
2016 | 11 | 3 | 2
2016 | 10 | 1 | 12
2016 | 10 | 2 | 2
2016 | 10 | 3 | 50
:
SELECT YEAR(created_at) as year, MONTH(created_at) as month, q1, count(*) as occurrence
FROM survey_table
GROUP BY YEAR(created_at), MONTH(created_at), q1
リターンのようなものになります。
30列の計算を行うには、別の質問に対してこのクエリを30回実行する方法もあります。
year | month| q1_1 | q1_2 | q1_3 | q2_1 | q2_2 | q2_3 | ... | q30_1 | q30_2 | q30_3
2016 | 11 | 10 | 15 | 2 | 2 | 20 | 5 | ... | 5 | 15 | 7
2016 | 10 | 12 | 2 | 50 | 25 | 27 | 12 | ... | 20 | 24 | 20
1つのクエリでこれを行う方法があります:出力は次のようなものになるように、単一のクエリでそれを行う方法がある場合、私は疑問に思って?はいの場合、このパフォーマンスは改善されますか?
Google - > SQLピボット – sagi
ありがとうございます。 – cytsunny
Googleが好きなのですが、データ表示の問題は一般にアプリケーションレベルのコードで解決されます(利用可能であることが前提です)。そうですね、あなたのデザインをNORMALIZEしてください。 – Strawberry