投票数をカウントするテーブルを照会しようとしていて、投票方法がリスト['C', 'M', 'S', 'L', 'T', 'V', 'B', 'E']
にある場合は、1としてカウントし、voting_methodを 'L'に置き換えてください。リスト内の変更列の値を選択してください
今私は正しい結果を返しますが、重複を考慮しない次のクエリを持っています。
select `election_lbl`, `voting_method`, count(*) as numVotes
from `gen2014` group by `election_lbl`, `voting_method` order by `election_lbl` asc
election_lbl voting_method numVotes
2014-09-04 M 1
2014-09-05 M 2
2014-09-05 S 1
2014-09-08 C 16
2014-09-08 M 5
2014-09-08 S 9
2014-09-09 10 5
2014-09-09 C 46
2014-09-09 M 4
2014-09-09 S 5
2014-09-10 C 92
2014-0g-10 M 3
2014-09-10 S 7
2014-09-11 C 96
2014-09-11 M 3
2014-09-11 S 2
2014-09-12 C 104
2014-09-12 M 10
2014-09-12 S 3
2014-09-15 C 243
2014-09-15 M 18
2014-09-15 S 3
2014-09-16 10 1
2014-09-16 C 161
2014-09-16 M 4
2014-09-16 S 3
2014-09-17 C 157
2014-09-17 M 5
2014-09-17 S 12
2014-09-05については、2つのvoting_method MとSの両方がリストにあることがわかります。値がリストにある場合は、重複した日付フィールドを削除することが理想的な結果になります。だから、2014-09-05 'L' 3となるでしょう。私はその日付の投票が消えないようにしたいので、結果はそれらを1つに数えるべきです。
クエリをこれに変更しましたが、mysqlの構文が間違っています。
select `election_lbl`, `voting_method`, count(*) as numVotes from `gen2014`
(case `voting_method` when in ('C', 'M', 'S', 'L', 'T', 'V', 'B', 'E')
then 'L' END) group by `election_lbl`, `voting_method` order by `election_lbl` asc
テーブルスキーマ
CREATE TABLE `gen2014` (
`voting_method` varchar(255) DEFAULT NULL,
`election_lbl` date DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
'in'は基本的に演算子ですが、適切な構文は' 'vote method in .... then ...'でなければなりません。私は何らかの理由で考えることができませんが、クエリが複雑になる必要があります(リストにないメソッドのnumVotesも必要としない限り)。 – Uueerdo
実際にはリストにないメソッドのnumVotesが必要です。目標は、リスト内のものを「L」として数え、残りはそのまま残すことです。 –