我有两个表,proj: id name
和proj_reports: id, position, created_at, key_id, proj_id
我想从选择key_reports
每个proj_id
:
- total number of `key_id` which can be done with `count(.key_id)`
- total number of DISTINCT `key_id` `count(DISTINCT .key_id)`
- total number of `key_id` where `position` > 1
- total number of `key_id` where `position` > 2 AND < 5
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是我不知道如何添加这些条件来检查位置是 > 或 < 一个数字还是在一个范围内。
您可以在 COUNT 聚合函数中使用 CASE 表达式。
SELECT
COUNT( CASE WHEN position > 1 THEN key_id ELSE NULL END ) AS GT1,
COUNT( CASE WHEN position > 2 AND position < 5 THEN key_id ELSE NULL END ) AS GT2LT5,
FROM
proj_reports
Run Code Online (Sandbox Code Playgroud)
COUNT 聚合不计算 NULL 值,所以这就是它起作用的原因。
这是一个演示该概念的 SQL Fiddle。
归档时间: |
|
查看次数: |
5307 次 |
最近记录: |