【问题标题】:MySQL vote count for each row each columnMySQL 每行每列的投票计数
【发布时间】:2023-04-10 22:13:01
【问题描述】:

不同于SQL: Count each row value in a column and return count into multiple column

我的行也不同。 我想要这样的计票结果。

CONTENT_NO  CONTENT_TEXT  one     two     three    four(ANSWER_SCORE)
1           How often?    0       1       0        1        
2           How fast?     0       1       0        1        
3           How long?     0       0       2        0        
4           How much?     1       1       0        0   

我有两张桌子

question_content
CONTENT_NO  CONTENT_TEXT  TEST_PAPER_NO
1           How often?    1
2           How fast?     1
3           How long?     1
4           How much?     1


question_content_answer
ANSWER_NO  CONTENT_NO  TEST_PAPER_NO  ANSWER_SCORE  PERSON_NO
1          1           1              4             1
2          2           1              4             1
3          3           1              3             1
4          4           1              2             1

5          1           1              2             2
6          2           1              2             2
7          3           1              3             2
8          4           1              1             2

我试过了

SELECT question_content.CONTENT_NO,
       question_content.CONTENT_TEXT,

       (SELECT COUNT(ANSWER_SCORE)
          FROM (SELECT ANSWER_SCORE 
                  FROM question_content_answer
                 WHERE TEST_PAPER_NO= '1' 
               ) as qa
          WHERE ANSWER_SCORE = '1'
            AND CONTENT_NO = qa.CONTENT_NO
          GROUP BY CONTENT_NO 
       ) as one,
       (SELECT COUNT(ANSWER_SCORE)
          FROM (SELECT ANSWER_SCORE 
                  FROM question_content_answer
                 WHERE TEST_PAPER_NO= '1' 
               ) as qa
          WHERE ANSWER_SCORE = '2'
            AND CONTENT_NO = qa.CONTENT_NO
          GROUP BY CONTENT_NO 
       ) as two,
       (SELECT COUNT(ANSWER_SCORE)
          FROM (SELECT ANSWER_SCORE 
                  FROM question_content_answer
                 WHERE TEST_PAPER_NO= '1' 
               ) as qa
          WHERE ANSWER_SCORE = '3'
            AND CONTENT_NO = qa.CONTENT_NO
          GROUP BY CONTENT_NO 
       ) as three

  FROM question_content_answer
 INNER JOIN question_content
 USING (CONTENT_NO) 
 WHERE question_content.TEST_PAPER_NO= '1' 

但这会计算每一行中的所有问题。

如何计算每一行?

【问题讨论】:

    标签: mysql


    【解决方案1】:

    就像SQL: Count each row value in a column and return count into multiple column

    这段代码运行良好。

    SELECT question_content.CONTENT_NO,
           question_content.CONTENT_TEXT, 
    
           COUNT(CASE WHEN ANSWER_SCORE = '1' THEN 1 END) AS one,
           COUNT(CASE WHEN ANSWER_SCORE = '2' THEN 1 END) AS two,
           COUNT(CASE WHEN ANSWER_SCORE = '3' THEN 1 END) AS three,
           COUNT(CASE WHEN ANSWER_SCORE = '4' THEN 1 END) AS four
    
      FROM question_content_answer 
    
     INNER JOIN question_content
     USING (CONTENT_NO) 
     WHERE question_content.TEST_PAPER_NO = '1' 
     GROUP BY question_content.CONTENT_NO
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-09
      • 2015-03-18
      • 1970-01-01
      • 2013-06-05
      • 2011-03-24
      • 1970-01-01
      相关资源
      最近更新 更多