这可能不是一个合适的论坛,但我想了解查询中发生的逻辑错误。
我在下面的查询中写道,以了解有多少用户传递的邮件大于发送的邮件(可能是数据捕获中的错误,只是想对其进行评估)。
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
Run Code Online (Sandbox Code Playgroud)
我得到的结果如下
_c0
1 1056840
2 1819729
Run Code Online (Sandbox Code Playgroud)
我不明白为什么第2行>第1行。
理想情况下,即使对于已发送的每个条目>发送,第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);
Run Code Online (Sandbox Code Playgroud)
系统输出如下..
COUNT(DISTINCTUSER_ID) QUERY
1 1 QUERY_2
2 4 QUERY_1
Run Code Online (Sandbox Code Playgroud)
同样的情况也可能是你的情况..
| 归档时间: |
|
| 查看次数: |
51 次 |
| 最近记录: |