在单个查询中从同一列不同的WHERE获取2个不同的结果

时间:2016-03-31 08:59:21

标签: mysql sql

SELECT COUNT(NAME) AS NAMEA
FROM (DATA.1 WHERE MARKS > 50), COUNT(NAME) AS NAMEB FROM DATA.1

运行后我得到了这个

  

JOIN操作中的语法错误

我试图获得学生通行证的百分比,不。学生通行证,总数没有。学生和没有。学生失败了。

请帮我查一下上述查询中的错误。

请帮帮我。 感谢

1 个答案:

答案 0 :(得分:1)

你实际上是在一个中运行两个查询。

查询1:

SELECT COUNT(NAME) AS NAMEA
FROM DATA1
WHERE MARKS > 50

查询2:

SELECT COUNT(NAME) AS NAMEB
FROM DATA1

如果您希望同一个查询中的两个列,则必须使用CASE WHEN的SUM作为第一个查询。

SELECT SUM(CASE WHEN MARKS > 50 THEN 1 ELSE 0 END) AS NAMEA,
       COUNT(NAME) AS NAMEB
FROM DATA1

对于其他要点,您需要查询:

SELECT COUNT(NAME) AS TOTAL_STUDENTS,
       SUM(CASE WHEN MARKS > 50 THEN 1 ELSE 0 END) AS STUDENTS_PASSED,
       SUM(CASE WHEN MARKS > 50 THEN 1 ELSE 0 END)/COUNT(NAME) AS PASS_RATE,
       SUM(CASE WHEN MARKS < 50 THEN 1 ELSE 0 END) AS STUDENTS_FAILED
FROM DATA1

请记住,这个错过了正好有50分的学生。如果50是传球,那么您需要对STUDENTS_PASSED使用&gt; = 50 。如果50表示失败,那么您需要对STUDENTS_FAILED使用&lt; = 50