我有一个关于我想要进行的 SQL 查询的问题。假设我有一个列,表中包含以下值:学校,列:成绩。
SUI grades | Score
2 9 2
2 9
5 4 1
5 4 1
5 4
6 1 1
6 1
和表 Grade_scores
id score_1 score_2
1 4 1
现在我不想要一个输出,它对仅计算成绩的 SUI 进行分组,如果分数已填写且 school.grades 为 <与 Grade_scores.score_1 或 Grade_scores.score_2 相同。所以我的输出将是:
SUI Count
5 2
6 1
到目前为止的代码...
SELECT SUI, Count(Grades)
FROM mytable
WHERE Score <> ''
GROUP BY SUI
最佳答案
您需要JOIN
您的school
和grade_scores
表中的grades
是中的两个值>成绩分数
:
SELECT s.SUI, COUNT(s.grades) AS `Count`
FROM grade_scores gs
JOIN school s ON s.Score IS NOT NULL AND s.grades IN (gs.score_1, gs.score_2)
GROUP BY s.SUI
输出:
SUI Count
5 2
6 1
注意 此查询假定 Score
列中的空值为 NULL
。如果它们是空字符串,请将 s.Score IS NOT NULL
替换为 s.Score != ''
关于mysql - 仅当字段已填充且与其他字段值相同时才计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56303921/