使用分组列计数

时间:2016-07-03 15:28:20

标签: sql postgresql

我的请求很简单,我算上表的不同列。 第一个查询计算子查询带来的列:

SELECT COUNT(field1), COUNT(field2), COUNT(field3)
FROM (
    SELECT field1, field2, field3
    FROM mytable
    WHERE ...
    ORDER BY id
    LIMIT 500000
) AS rq

限制条款在我的用例中至关重要。

这个请求非常适合计算单个列,但我还需要计算一组列(很多非空列而不是单个列)。

所以我需要

的结果
SELECT COUNT(1) AS mygroup
FROM mytable
WHERE (field4 IS NOT NULL AND field5 IS NOT NULL AND field6 IS NOT NULL)

但是在第一次查询的当前500000(LIMIT子句)行中。

我该怎么做?

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

只需使用条件聚合:

SELECT COUNT(field1), COUNT(field2), COUNT(field3),
       SUM(CASE WHEN field4 IS NOT NULL AND field5 IS NOT NULL AND field6 IS NOT NULL THEN 1 ELSE 0 END)
FROM (SELECT t.*
      FROM mytable t
      WHERE ...
      ORDER BY id
      LIMIT 500000
     ) rq;