mysql - 仅当字段已填充且与其他字段值相同时才计数

标签 mysql sql

我有一个关于我想要进行的 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_1Grade_scores.score_2 相同。所以我的输出将是:

SUI Count 
 5    2
 6    1

到目前为止的代码...

SELECT SUI, Count(Grades)
FROM mytable
WHERE Score <> ''
GROUP BY SUI

最佳答案

您需要JOIN您的schoolgrade_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

Demo on dbfiddle

注意 此查询假定 Score 列中的空值为 NULL。如果它们是空字符串,请将 s.Score IS NOT NULL 替换为 s.Score != ''

关于mysql - 仅当字段已填充且与其他字段值相同时才计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56303921/

相关文章:

mysql - 这个 MySQL 查询有什么问题?

mysql - 查询以查找每组记录数的平均值

sql - 在另一个语句中使用语句的结果

php - 查询根据一个字段的最大值和另一字段的特定值查找数据

php - Yii CSqlDataProvider 自定义限制

mysql - 同一列上的多个外键

PHP - 使用函数编写 SQL 查询

php - 连接到 WordPress 服务器中的 mysql 数据库

php - 寻找无碰撞随机数的有效方法

sql - 如何在 IF 语句中使用 LIKE 语句?