繁体   English   中英

Oracle SQL - 根据 CASE 表达式结果实现逻辑

[英]Oracle SQL - implement logic based on CASE expression result

我有以下查询,它返回我在任何列中至少有一个 NULL 的行的百分比:

SELECT
(SUM(CASE WHEN tablea.test IS NULL OR tableb.test IS NULL THEN 1 ELSE NULL END)/7000)*100) "at least one NULL (%)"
FROM tablea
FULL OUTER JOIN tableb
ON
tablea.test = tableb.test
WHERE ROWNUM < 7000;

查询对我来说很好,我得到了有效的结果。

但是我需要根据我的 SELECT 语句中计算的百分比在 tablec 中做进一步的操作。 如果 NULL 的行百分比低于 30% 我需要在表“tablec”列“resultcol”中插入“YES”字符串,我该如何实现这样的逻辑?

例如,是否可以将 SELECT 语句结果存储在一些临时变量中,该变量将在另一个 SQL 查询中使用?

您可以使用:

INSERT INTO tablec (resultcol)
SELECT 'YES'
FROM   tablea
       FULL OUTER JOIN tableb
       ON tablea.test = tableb.test
WHERE  ROWNUM < 7000
HAVING COUNT(CASE WHEN tablea.test IS NULL OR tableb.test IS NULL THEN 1 END) 
        < COUNT(*) * 0.3;

db<> 在这里摆弄

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM