sql-select语句

t40tm48m  于 2021-07-26  发布在  Java
关注(0)|答案(2)|浏览(356)

让我们以下表为例

  1. ID Name Status
  2. 1 Jon pass
  3. 2 Jon fail
  4. 3 Jon fail
  5. 4 Snow pass
  6. 5 Snow fail
  7. 6 Snow fail

我需要写一个查询,以下面的格式显示结果

  1. Name Total Pass Fail
  2. Jon 3 1 2
  3. Snow 3 1 2

我正在用select中的子查询尝试以下查询,但我知道它不正确。请告知。

  1. SELECT
  2. Name,
  3. count(ID) as Total,
  4. (SELECT count(ID) FROM results WHERE status = 'pass') as Pass
  5. (SELECT count(ID) FROM results WHERE status = 'fail') as Fail
  6. FROM results
  7. HAVING count(ID)>2
  8. GROUP BY Name
  9. ORDER BY count(ID) desc;
ffscu2ro

ffscu2ro1#

您可以使用条件聚合:

  1. SELECT
  2. Name,
  3. COUNT(ID) as Total,
  4. COUNT(CASE WHEN status = 'pass' THEN 1 END) Pass,
  5. COUNT(CASE WHEN status = 'fail' THEN 1 END) Fail
  6. FROM results
  7. GROUP BY Name
  8. HAVING COUNT(ID) > 2
  9. ORDER BY COUNT(ID) desc;

我保留了 HAVING 条款(必须放在 GROUP BY )因为你在你的代码中使用它。
请看演示。
结果:

  1. > NAME | TOTAL | PASS | FAIL
  2. > :--- | ----: | ---: | ---:
  3. > Jon | 3 | 1 | 2
  4. > Snow | 3 | 1 | 2
展开查看全部
6qfn3psc

6qfn3psc2#

尝试下面的脚本-

  1. SELECT
  2. Name,
  3. count(ID) as Total,
  4. SUM(CASE WHEN status = 'pass' THEN 1 ELSE 0 END) as Pass,
  5. SUM(CASE WHEN status = 'fail' THEN 1 ELSE 0 END) as fail
  6. FROM results
  7. GROUP BY Name
  8. HAVING count(ID)>2
  9. ORDER BY count(ID) desc;

相关问题