Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.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
仅返回特定值的PostreSQL_Sql_Postgresql - Fatal编程技术网

仅返回特定值的PostreSQL

仅返回特定值的PostreSQL,sql,postgresql,Sql,Postgresql,我有以下结构: sample\u表 code | delivery | end_date | type ---------------+----------------+--------------+------ C086000-T10001 | OK | 2014-11-12 | 01 C086000-T10001 | OK | 2014-11-11 | 03 C086000-T10002 | FA

我有以下结构:

sample\u表

  code         | delivery       | end_date     | type
---------------+----------------+--------------+------
C086000-T10001 | OK             | 2014-11-12   | 01
C086000-T10001 | OK             | 2014-11-11   | 03
C086000-T10002 | FALSE          | 2014-12-10   | 03
C086000-T10002 | FALSE          | 2014-01-04   | 03
C086000-T10003 | FALSE          | 2014-02-28   | 03
C086000-T10003 | FALSE          | 2014-11-12   | 01
C086000-T10003 | FALSE          | 2014-08-20   | 01
我想输出有多少代码(计数)处于OK delivery状态。 我试着做一些事情,比如:

SELECT sample_table.code AS code, sample_table.delivery AS delivered
FROM sample_table
WHERE COUNT(sample_table.delivery = "OK")
GROUP BY code, delivered
编辑 预期输出如下所示

  code         | delivered      | all_type     |
---------------+----------------+--------------+
C086000-T10001 | 2              | 04           |
C086000-T10002 | 0              | 06           |
C086000-T10003 | 0              | 05           | 
试试这个:

SELECT  count(*)
FROM sample_table
WHERE  sample_table.delivery = "OK" 
如果您需要代码:

    SELECT  code,         count(*)
    FROM sample_table
    WHERE  sample_table.delivery = "OK" 
group by code         

使用条件聚合:

SELECT code, 
  SUM(CASE WHEN delivery = 'OK' THEN 1 ELSE 0 END ) AS delivered,
  SUM(type) all_type
FROM sample_table
GROUP BY code

在Postgres中,
filter()
子句可以方便地实现以下功能:

select 
    code,
    count(*) filter(where delivery = 'OK') delivered,
    sum(type) all_type
from sample_table
group by code

你的预期产量是多少?嗨,吴先生,对于代码T10001,您不必为2014-11-12的结束日期交付预期结果,因为对于代码T10001,样本表中只有一行的结束日期为2014-11-12。您如何决定在列
end\u date
中显示哪个值?为什么代码
C086000-T10003
的结果集中没有记录?@GMB my错误,更新过滤器非常方便,谢谢!如何将此代码修改为仅对
代码
具有
交付=正常
类型进行计数?因此,在输出中,对于
C086000-T10002
C086000-T10003
04
第一个代码-
C086000-T10001
?@mr_muscle:这将是
sum(type)过滤器(其中delivery='OK')