gpt4 book ai didi

sql - 如何在 Oracle 中执行 countIf()

转载 作者:行者123 更新时间:2023-12-04 11:02:20 53 4
gpt4 key购买 nike

如何选择一个变量,其输出与 excel 函数相同:

COUNTIFS(A1:D1,"<25", A1:D1, ">16")?

IE。计算我的四个字段中的值在 16 到 25 之间的次数。

最佳答案

你可以用 count() 来做到这一点和 case表达式。注:case有一个可选的 else条款;如果不使用,则默认else “值(value)”是 null . Count 只计算非空值,因此您可以结合这些观察结果来编写紧凑的代码。计算什么并不重要;所以case表达式可能会返回一个数字(通常为 1,但 0 也同样有效,并且会给出相同的结果,因为这些值是 COUNTED,而不是 SUMMED)-但在这种情况下,您也可以使用像 'x' 这样的字符串或日期表达。为了说明这一点,我将使用一个字符串。

select count( case when col > 16 and col < 25 then 'x' end ) as ct from your_table;

这里 your_table是您的表的名称, col的名字栏目 包含值,和 ct是结果列的名称(满足条件的值计数的标签)。

当然,在数据库中,您可以更轻松地获得相同的结果:
select count(*) as ct from your_table where col > 16 and col < 25;

但请注意,这些值位于一列中。

相反,如果您有一个包含四个 COLUMNS 和许多行的表,并且所有列中的所有值都是数字,并且您想添加一列来显示在 16 到 25 IN EACH ROW 之间有多少个值,则解决方案是不同的(但是它使用相同的想法):
select col1, col2, col3, col4, 
case when col1 > 16 and col1 < 25 then 1 else 0 end +
case when col2 > 16 and col2 < 25 then 1 else 0 end +
case when col3 > 16 and col3 < 25 then 1 else 0 end +
case when col4 > 16 and col4 < 25 then 1 else 0 end as ct
from my_table;

关于sql - 如何在 Oracle 中执行 countIf(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40087843/

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