sql - Obtaining counts for two different conditions -
suppose have table states
follows:
create table states (id int4 unique not null, state int4 not null);
i want number of rows in table state 1, , number of rows in table state 2. doing in 2 separate queries straightforward:
select count(*) states state = 1; select count(*) states state = 2;
but seems silly go through whole table twice. can think of clever trick allow me same information in single statement , going through table once?
select count((state = 1)::integer or null) state_1, count((state = 2)::integer or null) state_2 states
or
select sum((state = 1)::integer) state_1, sum((state = 2)::integer) state_2 states
Comments
Post a Comment