gpt4 book ai didi

sql - Oracle SQL-在 "Distinct"查询中获取 "CASE"值

转载 作者:行者123 更新时间:2023-12-04 23:31:54 24 4
gpt4 key购买 nike

我在 ORACLE SQL 中有以下查询:

Select
Trunc(Cs.Create_Dtime),
Count(Case When Cs.Cs_Listing_Id Like '99999999%' Then (Cs.Player_Id) End) As Sp_Dau,
Count(Case When Cs.Cs_Listing_Id Not Like '99999999%' Then (Cs.Player_Id) End) As Cs_Dau
From
Player_Chkin_Cs Cs
Where
Trunc(Cs.Create_Dtime) >= To_Date('2012-Jan-01','yyyy-mon-dd')
Group By Trunc(Cs.Create_Dtime)
Order By 1 ASC

我在每个计数的“case”之前添加了“Distinct”。我只是想确保在每种情况下这只会返回所有不同的 player_Id。有人可以确认吗?谢谢!这是最终查询:

Select
Trunc(Cs.Create_Dtime),
Count(Distinct Case When Cs.Cs_Listing_Id Like '99999999%' Then (Cs.Player_Id) End) As Sp_Dau,
Count(Distinct Case When Cs.Cs_Listing_Id Not Like '99999999%' Then (Cs.Player_Id) End) As Cs_Dau
From
Player_Chkin_Cs Cs
Where
Trunc(Cs.Create_Dtime) >= To_Date('2012-Jan-01','yyyy-mon-dd')
Group By Trunc(Cs.Create_Dtime)
Order By 1 ASC;

最佳答案

一个简单的测试用例,用于证明 count(distinct ... 仅返回不同的值:

11:34:09 HR@vm_xe> select department_id, count(*) from employees group by department_id order by 2 desc;      

DEPARTMENT_ID COUNT(*)
------------- ----------
50 45
80 34
100 6
30 6
60 5
90 3
20 2
110 2
40 1
10 1
1
70 1

12 rows selected.

Elapsed: 00:00:00.03
11:34:12 HR@vm_xe> select count(department_id) "ALL", count(distinct department_id) "DISTINCT" from employees;

ALL DISTINCT
---------- ----------
106 11

1 row selected.

Elapsed: 00:00:00.02
11:34:20 HR@vm_xe>

关于sql - Oracle SQL-在 "Distinct"查询中获取 "CASE"值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12593477/

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