SQL 将多行视为 1 进行分组

SQL group by considering multiple rows as 1

假设我有以下 table(课程)

course-------score 

A---------------4

B---------------6

C---------------3

A---------------2

B---------------4

C---------------4

现在,如果我想获得每门课程的平均值、最小值和最大值,我将使用以下

SELECT course, AVG(score),MIN(score),Max(score) FROM [courses]
GROUP BY course

但是如果我想将课程 A 和 B 都视为 A 怎么办 所以我应该得到以下

Course-------Average-------Min-------Max

A---------------4----------2-----------6

C--------------3.5---------3-----------4

你的例子似乎表明你的问题有误 - 我假设你的意思是 "If I want to consider A and C as A"

在这种情况下,您应该可以在 GROUP BY

中执行此操作
GROUP BY
    CASE WHEN Course = 'C' THEN 'A' ELSE Course END

如果这不起作用,那么您可以嵌套查询:

SELECT
    ModifiedCourses.Course,
    AVG(ModifiedCourses.score),
    MIN(ModifiedCourses.score),
    Max(ModifiedCourses.score) 
FROM (
    SELECT
       CASE WHEN Course = 'C' THEN 'A' ELSE Course END AS Course,
       Score
    FROM
        Courses) AS ModifiedCourses
GROUP BY
    ModifiedCourses.Course