gpt4 book ai didi

sql - 如何编写在组中找不到记录时返回 count = 0 的 SQL 查询

转载 作者:行者123 更新时间:2023-12-02 08:27:19 24 4
gpt4 key购买 nike

我有一个客户表,我需要按以下顺序从中选择数据:

Gender      Count
-----------------
Female 10
Male 50
Unknown 2

(以上表格数据仅作为示例)

为此,我使用了以下 SQL:

SELECT decode(gender, 'F', 'Female', 'M', 'Male', 'Unknown') "Gender"
, count(ID) "Count"
FROM client c
WHERE c.created <= '01-JAN-2000'
GROUP BY decode(gender, 'F', 'Female', 'M', 'Male', 'Unknown')
ORDER BY decode(gender, 'F', 'Female', 'M', 'Male', 'Unknown')
;

但是,问题是没有在 2000 年 1 月 1 日之前创建的客户端!因此,表格显示为空白:

Gender     Count
----------------

但是,在这种情况下,我想这样展示:

Gender     Count
----------------
Female 0
Male 0
Unknown 0

请告诉我该怎么做?

最佳答案

您可以先选择性别(使用内联 View ),然后对结果执行左外连接。这将保证始终有一个性别列表可显示在第一列中:

SELECT g.gender
, count(ID) "Count"
FROM ( select 'Female' gender from dual
union all
select 'Male' gender from dual
union all
select 'Unknown' gender from dual
) g
left
outer
join client c
on decode(c.gender, 'F', 'Female', 'M', 'Male', 'Unknown') = g.gender
and c.created <= '01-JAN-2000'
GROUP
BY g.gender
ORDER
BY g.gender
;

关于sql - 如何编写在组中找不到记录时返回 count = 0 的 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30885334/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com