天天看點

sql求分類跟合計:rollup()函數

需求:按照地區code分組求個數,并包括合計,先解釋下rollup()函數,比group by 多一個總計

select

area_code,

   sum(CASE WHEN owner_type = 0 THEN 1 ELSE 0 END) as legalPersonNum,

   sum(CASE WHEN owner_type = 1 THEN 1 ELSE 0 END) as adminNum

from licence_manager.business_licence_phone_entity

where area_code is not null and area_code != ''

group by rollup(area_code)

sql求分類跟合計:rollup()函數

1、第一種,采用union

'合計' as area_code,sum(legalPersonNum) as legalPersonNum,

sum(adminNum) as adminNum

from(

select

    area_code,

    sum(CASE WHEN owner_type = 0 THEN 1 ELSE 0 END) as legalPersonNum,

    sum(CASE WHEN owner_type = 1 THEN 1 ELSE 0 END) as adminNum

from licence_manager.business_licence_phone_entity

where area_code is not null and area_code != ''

group by area_code

order by area_code

)

union

   area_code,

group by area_code

order by area_code

sql求分類跟合計:rollup()函數

2、采用rollup()函數

   decode(grouping(area_code),1,'total',area_code) as area_code,

sql求分類跟合計:rollup()函數