我想根据某些条件计算记录数。
这是条件。
数据:
"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
的计数,但N
除col2
col1
值A
之外的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
中执行此操作的方法。
答案 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)
你可以考虑A
和not 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'))