繁体   English   中英

MySql计数每个字段

[英]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;

参见SQLFIDDLE: http ://www.sqlfiddle.com/#!2 / 19a56/6 /0

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM