SQL查询获取字段值分布

标签 sql pivot

我有一个包含超过 100 万条测试分数记录的表,这些记录基本上都有一个唯一的 Score_ID、一个 subject_ID 和一个人给出的分数。大多数科目的分数范围是 0-3,但有些科目的分数范围是 0-4。大约有 25 个可能的主题。

我需要生成一份分数分布报告,如下所示:

subject_ID     0    1    2    3    4
----------    ---  ---  ---  ---  ---
1             967  576  856  234  
2             576  947  847  987  324
.
.

因此,它按 subject_ID 对数据进行分组,然后显示该主题内给出特定分数值的次数。

任何用于生成此内容的 SQL 指针将不胜感激。

最佳答案

Select subject_id
    , Sum( Case When Score = 0 Then 1 Else 0 End ) As [0]
    , Sum( Case When Score = 1 Then 1 Else 0 End ) As [1]
    , Sum( Case When Score = 2 Then 1 Else 0 End ) As [2]
    , Sum( Case When Score = 3 Then 1 Else 0 End ) As [3]
    , Sum( Case When Score = 4 Then 1 Else 0 End ) As [4]
From Table
Group By subject_id

关于SQL查询获取字段值分布,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3057143/

相关文章:

mysql - 转向 SQL Access

mysql - 如何在 MySQL 中将行数据转置为列

MySQL 将行转为动态数量的列

sql - t sql "select case"vs "if ... else"以及关于 "begin"的解释

SQL 2008 VS 2012错误: Incorrect syntax near the keyword 'COMPUTE'

使用in和自然连接数量时mysql查询困惑

mysql select 基于两个条件

sql - 仅在数据库上触发而不是在表上触发

JavaFx 以鼠标为中心缩放

具有动态生成列和聚合函数的 SQL Pivot