2016-04-23 13 views
0

オリジナルMySQLから。 、2つのデータベース間で一貫性のあるクエリについてPostgreSQLでどのようにこのクエリを書くことができますか?

SELECT 
sum(status='waiting'), 
sum(source='twitter'), 
sum(no_send_before <= '2009-05-28 03:17:50'), 
sum(tries <= 20), 
count(*) 
FROM table_name 


*************************** 1. row *************************** 
         sum(status ='waiting'): 550 
         sum(source='twitter'): 37271 
sum(no_send_before <= '2009-05-28 03:17:50'): 36975 
          sum(tries <= 20): 36569 
            count(*): 37271 

答えて

1

caseを使用します:そこ私は条件によって、列とどのように多くの別の行を知りたい

SELECT sum(case when status='waiting' then 1 else 0 end), 
     sum(case when source='twitter' then 1 else 0 end), 
     sum(case when no_send_before <= '2009-05-28 03:17:50' then 1 else 0 end), 
     sum(case when tries <= 20 then 1 else 0 end), 
     count(*) 
FROM table_name; 

短く、Postgresの固有の構文について:

SELECT sum((status='waiting')::int), 
     sum((source='twitter')::int)), 
     sum((no_send_before <= '2009-05-28 03:17:50'))::int), 
     sum((tries <= 20))::int), 
     count(*) 
FROM table_name 
関連する問題