1

編集: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
    ...               ...                   ...
4

1 に答える 1