編集:postgresql
一部の従業員の売上高がたくさんあります...表は次のようになります。
SalesRep # of sales/day NTILE(2)
-------- -------------- ----------
Johnny 1 1
Johnny 1 1
Johnny 4 1
Johnny 5 2
Johnny 5 2
Johnny 5 2
Sara 2 1
Sara 2 1
Sara 2 1
Sara 3 2
Sara 4 2
Sara 5 2
... ... ...
各営業担当者の 1 日あたりの売上の平均数を、パフォーマンスが最悪の日の 50% と、パフォーマンスが最高の日の 50% について調べたいと思います。
たとえば、出力テーブルは次のようになります。
SalesRep #ofSales Bottom50% #ofSales Top50%
-------- -------------- ----------
Johnny 2 5
Sara 2 4
... ... ...
これまでのところ、私は持っています:
select
salesrep,
case when ntile = 1 then avg(numsales) end,
case when ntile = 2 then avg(numsales) end,
...
...
case when ntile = 10 then avg(numsales) end
from (
select
salesrep,
numsales,
NTILE(10) over (PARTITION BY salesrep order by numsales asc) as ntile
from XXX
) as YYY
group by salesrep, ntile
これにより、出力に多数の NULL が含まれるという奇妙なエラーが発生します...下の表を参照してください。
SalesRep #ofSales Bottom50% #ofSales Top50%
-------- -------------- ----------
Johnny NULL 5
Sara 2 NULL
... ... ...