查询中必需的帮助

时间:2014-03-06 12:38:35

标签: database postgresql

我想根据某些条件计算记录数。

这是条件。

数据:

"col1"  "col2"  "col3
A   Y   Y
A   Y   Y
A   N   Y
A   N   Y
A   N   Y
A       Y
A       Y
A   N   Y
B   Y   N
B   Y   Y
B   N   Y
B   N   N
B   Y   Y
B   N   Y
C   Y   N
C   Y   Y
C   N   Y
C   Y   Y
C   N   Y
C   Y   Y

我需要从Y计算col3的计数,但Ncol2 col1A之外的N。当我想到这样的时候,我的脑袋就会开裂。

注意:只有col1值为A时,才必须排除col2的Y值。空值也需要与Y一起包含,并传递col3值为{{1}的条件}}

请帮帮我。

如果查询正确,我需要将计数设为11

我试过的代码。

Select
    'Yes' as "label",
    Count(*)    
FROM Table1
Where "date" between '2014-03-01' And '2014-03-05'
And
"col3" = 'Y' and ("col1"  'C' and "col2"  'N')

我有想法如何口头表达。我无法找到在PostgreSQL中执行此操作的方法。

3 个答案:

答案 0 :(得分:2)

尝试这样的事情:

Select
    'Yes' as "label",
    Count(*)    
FROM Table1
Where "date" between '2014-03-01' And '2014-03-05'
AND col3 = 'Y' AND NOT (col1='A' AND col2 IS NOT NULL AND col2='N')

答案 1 :(得分:0)

select
    count(col3 = 'Y' or null) - count(col2 = 'N' and col1 = 'A' or null) as "Yes"
from table1
where
    "date" between '2014-03-01' and '2014-03-05'

答案 2 :(得分:0)

你可以考虑Anot A,因为两种不同的情况会尝试这样的事情:

Select 'Yes' as "label", Count(*)    
FROM Table1
Where "date" between '2014-03-01' And '2014-03-05'
and   "col3" = 'Y'
And   (("col1" = 'A' And "col2" <> 'N') Or ("col1" <> 'A'))