postgresql逐行比较两列中的值
postrgresql row by row comparison of values in two columns
我有一个 postgres 数据库,在 GROUPBY 之后我必须评估与此近似的条目 table:
然后我尝试找出每列的 MIN 和 MAX,并计算 'A' 或 'B' 列中不存在零的行数。在这种情况下,我计算了一行,因为在行“4”中,'A' 和 'B' 列中都有非零值。获取 MIN 和 MAX 很简单,但我不知道如何执行最后一步。
SELECT MIN(A) as "minA",
MAX(A) as "maxA",
MIN(B) as "minB",
MAX(B) as "maxB",
COUNT(????) as "num_full"
FROM bigDB
GROUPBY inlet
我想也许我可以对每一行求和并测试结果是否等于 'A' 或 'B' 的值,即如果 A 或 B 为零,则总和为 A或 B。但是 sum() 按列而不是按行工作。有没有一种方法可以按行求和,或者有没有更好的方法来做我想做的事情?
使用filter
:
COUNT(*) FILTER (WHERE A <> 0 AND B <> 0) as num_full
不需要用双引号将列别名括起来。
我有一个 postgres 数据库,在 GROUPBY 之后我必须评估与此近似的条目 table:
然后我尝试找出每列的 MIN 和 MAX,并计算 'A' 或 'B' 列中不存在零的行数。在这种情况下,我计算了一行,因为在行“4”中,'A' 和 'B' 列中都有非零值。获取 MIN 和 MAX 很简单,但我不知道如何执行最后一步。
SELECT MIN(A) as "minA",
MAX(A) as "maxA",
MIN(B) as "minB",
MAX(B) as "maxB",
COUNT(????) as "num_full"
FROM bigDB
GROUPBY inlet
我想也许我可以对每一行求和并测试结果是否等于 'A' 或 'B' 的值,即如果 A 或 B 为零,则总和为 A或 B。但是 sum() 按列而不是按行工作。有没有一种方法可以按行求和,或者有没有更好的方法来做我想做的事情?
使用filter
:
COUNT(*) FILTER (WHERE A <> 0 AND B <> 0) as num_full
不需要用双引号将列别名括起来。