OracleSQLで請求書データを処理しています。指定された請求日までのアカウントの請求額の中央値を与える変数「現在までのアカウント請求額の中央値」を作成したいと思います。
1637 次
2 に答える
2
Oracleには実際にmedian
機能があります。毎日のすべてのアカウントの中央値を見つけるには:
select median(amount)
from invoices
または、1日あたりのアカウントあたりの中央値を表示するには:
select AccountNr
, to_char(InvoiceDate, 'yyyymmdd')
, median(amount)
from invoices
group by
AccountNr
, to_char(InvoiceDate, 'yyyymmdd')
または、「実行中の中央値」を表示するには:
select i1.custID
, i1.inv_date
, median(i2.amount)
from invoices i1
join invoices i2
on i2.custId = i1.custID
and i2.inv_date <= i1.inv_date
group by
i1.custID
, i1.inv_date
于 2011-08-28T09:18:51.767 に答える
0
私が理解していることから、これがあなたが求めているものです。@Andomar、中央値は一連の数字の中間であるため、このシリーズを並べても結果に違いはありません。最高と最低の真ん中の数字は変わらない…
したがって、データとアカウントの中央値は次のようになります。
select acc_no, median(amount) over ( partition by acc_no, to_char(invoice_date,'yyyymmdd'))
from invoices
-- if applicable
where invoice_date < :date
アカウント別の中央値は
select acc_no, median(amount) over ( partition by acc_no )
from invoices
where invoice_date < :date
于 2011-08-28T18:35:26.167 に答える