gpt4 book ai didi

sql - 带有 WHERE 子句的 COUNT 比没有 WHERE 子句的行数多

转载 作者:行者123 更新时间:2023-12-04 15:38:46 26 4
gpt4 key购买 nike

这可能不是问这个问题的正确论坛,但我想了解我的查询中发生的逻辑错误。

我写了下面的查询来了解有多少用户发送的消息大于发送的消息(可能是数据捕获中的错误,只是想对其进行评估)。

SELECT COUNT(DISTINCT user_id)
FROM wk_24_trigger

UNION

SELECT COUNT(DISTINCT user_id)

FROM (

SELECT *, (CASE WHEN delivered > 0 THEN 1 ELSE 0 END) as D,
(CASE WHEN sent > 0 THEN 1 ELSE 0 END) as S
FROM wk_24_trigger) t
WHERE t.D > t.s

我得到的结果如下
    _c0
1 1056840
2 1819729

我不明白为什么第 2 行 > 第 1 行。

理想情况下,即使对于每个条目 Delivered > Sent 那么第 2 行和第 1 行应该是相同的

最佳答案

您确定第一行是第一个查询的结果,第二行是第二个查询的结果..??

它总是不需要..

尝试在每个查询的计数后添加别名并验证结果..

你也可以检查下面的例子..

WITH TEMP
AS(
SELECT 'A' USER_ID , 1 DELIVERED , NULL SENT FROM DUAL
UNION
SELECT 'B' ID , 10 A , 1 B FROM DUAL
UNION
SELECT 'C' ID , NULL A , 1 B FROM DUAL
UNION
SELECT 'D' ID , -1 A , 1 B FROM DUAL
)
SELECT COUNT(DISTINCT USER_ID), 'QUERY_1' QUERY
FROM TEMP
UNION
(SELECT COUNT(DISTINCT USER_ID), 'QUERY_2'

FROM (
SELECT USER_ID,DELIVERED,SENT,
(CASE
WHEN DELIVERED > 0 THEN
1
ELSE
0
END) D,
(CASE
WHEN SENT > 0 THEN
1
ELSE
0
END) S
FROM TEMP) T
WHERE T.D > T.S);

和系统输出如下..
    COUNT(DISTINCTUSER_ID)  QUERY
1 1 QUERY_2
2 4 QUERY_1

你的情况也一样..

关于sql - 带有 WHERE 子句的 COUNT 比没有 WHERE 子句的行数多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56672820/

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