postgresql计数在不同条件下是不同的

时间:2017-04-10 09:28:24

标签: sql postgresql group-by

我被困在一项运动中,我需要计算对行星的独特访问总量,但如果行星是月球(maan),则应计算两次。客户编号也应为121

select case 
        when objectnaam = 'Maan' then count(objectnaam)
        else count(distinct objectnaam)
   end as aantal_bezoeken
from klanten inner join deelnames on klanten.klantnr = deelnames.klantnr
         inner join reizen on deelnames.reisnr = reizen.reisnr
         inner join bezoeken on reizen.reisnr = bezoeken.reisnr
where klanten.klantnr = 121
group by objectnaam

它给了我这个结果

aantal_bezoeken
      1
      4
      1
      1

但结果应为

aantal_bezoeken
      7

我只需要将所有这些值加在一起,但我不知道如何, 或者可能有一个更简单的解决方案。它应该没有子查询

1 个答案:

答案 0 :(得分:1)

试试这个:

select sum(aantal_bezoeken) as aantal_bezoeken from
(select case 
        when objectnaam = 'Maan' then count(objectnaam)
        else count(distinct objectnaam)
   end as aantal_bezoeken
from klanten inner join deelnames on klanten.klantnr = deelnames.klantnr
         inner join reizen on deelnames.reisnr = reizen.reisnr
         inner join bezoeken on reizen.reisnr = bezoeken.reisnr
where klanten.klantnr = 121
group by objectnaam) as a