Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PostgreSQL在不同条件下从表中选择并计数列_Sql_Postgresql_Select_Count - Fatal编程技术网

PostgreSQL在不同条件下从表中选择并计数列

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

我有一个表格(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       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