PostgreSQL在不同条件下从表中选择并计数列
我有一个表格(tb_author),显示关于文本和作者的信息。它看起来是这样的:PostgreSQL在不同条件下从表中选择并计数列,sql,postgresql,select,count,Sql,Postgresql,Select,Count,我有一个表格(tb_author),显示关于文本和作者的信息。它看起来是这样的: AUTHOR | TEXTID | APPROVED A1 T1 OK A1 T2 OK A2 T3 NOK A2 T4 OK A2 T5 OK A3 T6 OK A3 T7 NOK A3 T8 NOK A3 T9
AUTHOR | TEXTID | APPROVED
A1 T1 OK
A1 T2 OK
A2 T3 NOK
A2 T4 OK
A2 T5 OK
A3 T6 OK
A3 T7 NOK
A3 T8 NOK
A3 T9 OK
A4 T10 OK
AUTHOR | TEXTS| TEXTSAPPROVED
A1 2 2
A2 3 2
A3 4 2
A4 1 1
我需要以两种不同的方式计算这里的信息。首先,看看每个作者写了多少篇文章,第二,看看每个作者批准了多少篇文章
我只知道如何对每个查询进行单独计数,但不知道如何在如下视图中显示它们:
AUTHOR | TEXTID | APPROVED
A1 T1 OK
A1 T2 OK
A2 T3 NOK
A2 T4 OK
A2 T5 OK
A3 T6 OK
A3 T7 NOK
A3 T8 NOK
A3 T9 OK
A4 T10 OK
AUTHOR | TEXTS| TEXTSAPPROVED
A1 2 2
A2 3 2
A3 4 2
A4 1 1
以我有限的知识,我只需要做两个独立的查询:
SELECT author, COUNT(*)
FROM tb_author
GROUP BY author
SELECT author, COUNT(*)
FROM tb_author
WHERE approved='OK'
GROUP BY author
谢谢大家! 将条件聚合与
过滤器
子句一起使用:
SELECT author, COUNT(*),
COUNT(*) FILTER (WHERE approved = 'OK')
FROM tb_author
GROUP BY author