sql – 如何计数和分组

正如您在下面的图片中所看到的,我需要计算每列上有多少个“1”,数字“1”表示受访者在家中感到安全(AP_4_01),工作场所(AP4_4_02)等等. .

2号=不安全

3号=不适用

9号=没有回答

+----------+----------------------+
| Columns  | Numbers of persons   |
+----------+----------------------+
| AP4_4_01 | 312                  |
| AP4_4_02 | 232                  |
| AP4_4_03 | 345                  |
| AP4_4_0X | XXX                  |
+----------+----------------------+

最佳答案 您只需要在某些case语句中使用SUM函数

SELECT 
    SUM(CASE WHEN AP_4_01 = 1 THEN 1 ELSE 0 END)
   ,SUM(CASE WHEN AP_4_02 = 1 THEN 1 ELSE 0 END)
   ...etc
FROM Table

要获得类似问题的结果集,您需要使用UNPIVOT函数,或者您可以在excel中转​​置它.

点赞