[英]MySql Count on each field
我对Query有问题。 有人可以帮我吗
让我们考虑这样的一张桌子。 我们将存储0表示否,将1表示是 。 对于某些表,我们使用1表示是,使用2表示否。 每个月我们都会向客户发送一个调查问题,他们将在是或否上打勾
+----------------------------------------------------------------------+
| id| Month | Customer | QuestionA | QuestionB | QuestionC | QuestionD |
+---+-------+----------+-----------+-----------+-----------+-----------+
| 1 | Jan | 1100 | 1 | 0 | 1 | 0 |
| 2 | Jan | 1101 | 0 | 0 | 1 | 1 |
| 3 | Jan | 1102 | 1 | 1 | 1 | 1 |
| 4 | Feb | 1100 | 1 | 1 | 0 | 1 |
| 5 | Mar | 1100 | 1 | 1 | 0 | 0 |
+---+-------+----------+-----------+-----------+-----------+-----------+
我该如何写一个查询,显示每个问题有多少个被打勾的是。 换句话说,对于简,我需要变得像
+------------------------------------------------------------------+
| Month | Customer | QuestionA | QuestionB | QuestionC | QuestionD |
+-------+----------+-----------+-----------+-----------+-----------+
| Jan | 1100 | 2 | 1 | 3 | 2 |
+-------+----------+-----------+-----------+-----------+-----------+
即QuestionA被2个客户打勾,Questionb被1打勾,依此类推...
编辑:
但是在某些表中,我们使用1表示是,使用2表示否。 该怎么办。 抱歉,我们已经设计了这样的产品,并且已经使用了3年以上。 所以他们不会允许我将0更改为no,将1更改为yes
还没有测试过,但是您可以尝试一下。 告诉我结果,以便我们可以根据需要进行更新。
select month, sum(QuestionA), sum(QuestionB), sum(QuestionC), sum(QuestionD) from table_name where month='Jan'
这应该可行,但是如果没有年份字段并且明年一月即将来临,您需要查看会发生什么……您还需要年份字段,以便可以按月和年份分组
SELECT
`Month`,
SUM(`QuestionA`) AS `QuestionA`,
SUM(`QuestionB`) AS `QuestionB`,
SUM(`QuestionC`) AS `QuestionC`,
SUM(`QuestionD`) AS `QuestionD`
FROM
tblsurvery
GROUP BY
`Month`
编辑:
thanks but in some table we have used 1 for yes and 2 for no
SELECT
`Month`,
SUM(IF(`QuestionA`=1,1,0) AS `QuestionA`,
SUM(IF(`QuestionB`=1,1,0) AS `QuestionB`,
SUM(IF(`QuestionC`=1,1,0) AS `QuestionC`,
SUM(IF(`QuestionD`=1,1,0) AS `QuestionD`
FROM
tblsurvery
GROUP BY
`Month`
如果不需要客户字段(这是我所怀疑的),则可以尝试以下操作:
SELECT
month,
SUM(IF(QuestionA=1,1,0)) AS QuestionA,
SUM(IF(QuestionB=1,1,0)) AS QuestionB,
SUM(IF(QuestionC=1,1,0)) AS QuestionC,
SUM(IF(QuestionD=1,1,0)) AS QuestionD
FROM survey
GROUP BY month;
参见SQLFIDDLE: http ://www.sqlfiddle.com/#!2 / 19a56/3 /0
如果需要,请尝试以下操作:
SELECT
month, min(customer),
SUM(IF(QuestionA=1,1,0)) AS QuestionA,
SUM(IF(QuestionB=1,1,0)) AS QuestionB,
SUM(IF(QuestionC=1,1,0)) AS QuestionC,
SUM(IF(QuestionD=1,1,0)) AS QuestionD
FROM survey
GROUP BY month;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.