假设我有下表
claim_date person_type ------------------------ 01-01-2012 adult 05-05-2012 adult 12-12-2012 adult 12-12-2012 adult 05-05-2012 child 05-05-2012 child 12-12-2012 child
当我执行以下查询时:
select claim_date, sum(case when person_type = 'adult' then 1 else 0 end) as "nbr_of_adults", sum(case when person_type = 'child' then 1 else 0 end) as "nbr_of_children" from my_table group by claim_date ;
我在这里得到这个结果:
claim_date nbr_of_adults nbr_of_children --------------------------------------------- 01-01-2012 1 0 05-05-2012 1 2 12-12-2012 2 1
我想得到的是最大的成人人数(此处为2个)和最大的孩子人数(此处为2个)。有没有一种方法可以通过单个查询来实现?感谢您的任何提示。
使用派生表获取计数,然后选择最大值:
select max(nbr_of_adults) max_adults, max(nbr_of_children) max_children from ( select sum(case when person_type = 'adult' then 1 else 0 end) as "nbr_of_adults", sum(case when person_type = 'child' then 1 else 0 end) as "nbr_of_children" from my_table group by claim_date ) a