我有一张桌子,我需要以下列方式呈现输出.
tb_a:
col1 | reg_id | rsp_ind
Run Code Online (Sandbox Code Playgroud)
rsp_ind = 0的行数为"New",1为"Accepted"
输出应该是
NEW | Accepted
9 | 10
Run Code Online (Sandbox Code Playgroud)
我尝试使用以下查询.
select
case when rsp_ind = 0 then count(reg_id)end as 'New',
case when rsp_ind = 1 then count(reg_id)end as 'Accepted'
from tb_a
Run Code Online (Sandbox Code Playgroud)
我得到的输出为
NEW | Accepted
NULL| 10
9 | NULL
Run Code Online (Sandbox Code Playgroud)
有人可以帮我调整查询以实现输出.注意:我无法在此处添加总和.它是一个更大的程序的一部分,所以我不能添加一个超级查询.
Nug*_*get 91
SELECT
COUNT(CASE WHEN rsp_ind = 0 then 1 ELSE NULL END) as "New",
COUNT(CASE WHEN rsp_ind = 1 then 1 ELSE NULL END) as "Accepted"
from tb_a
Run Code Online (Sandbox Code Playgroud)
您可以在此处查看此请求的输出
关闭...尝试:
select
Sum(case when rsp_ind = 0 then 1 Else 0 End) as 'New',
Sum(case when rsp_ind = 1 then 1 else 0 end) as 'Accepted'
from tb_a
Run Code Online (Sandbox Code Playgroud)
根据您的SQL风格,您还可以在聚合计数中隐含else语句。
例如,这是一个简单的表Grades:
| Letters |
|---------|
| A |
| A |
| B |
| C |Run Code Online (Sandbox Code Playgroud)
我们可以像这样测试每种Aggregate计数器语法(SQL Fiddle中的Interactive Demo):
SELECT
COUNT(CASE WHEN Letter = 'A' THEN 1 END) AS [Count - End],
COUNT(CASE WHEN Letter = 'A' THEN 1 ELSE NULL END) AS [Count - Else Null],
COUNT(CASE WHEN Letter = 'A' THEN 1 ELSE 0 END) AS [Count - Else Zero],
SUM(CASE WHEN Letter = 'A' THEN 1 END) AS [Sum - End],
SUM(CASE WHEN Letter = 'A' THEN 1 ELSE NULL END) AS [Sum - Else Null],
SUM(CASE WHEN Letter = 'A' THEN 1 ELSE 0 END) AS [Sum - Else Zero]
FROM Grades
Run Code Online (Sandbox Code Playgroud)
以下是结果(出于可读性的考虑而保留):
| Description | Counts |
|-------------------|--------|
| Count - End | 2 |
| Count - Else Null | 2 |
| Count - Else Zero | 4 | *Note: Will include count of zero values
| Sum - End | 2 |
| Sum - Else Null | 2 |
| Sum - Else Zero | 2 |Run Code Online (Sandbox Code Playgroud)
哪些与SQL中的聚合函数的文档一致
的文件COUNT:
COUNT(*)-返回组中的项目数。这包括NULL值和重复项。
COUNT(ALL expression)-计算组中每一行的表达式,并返回非空值的数量。
COUNT(DISTINCT expression)-计算组中每一行的表达式,并返回唯一的非空值的数量。
的文件SUM:
ALL-将汇总函数应用于所有值。ALL是默认值。
DISTINCT-指定SUM返回唯一值的总和。