Oracle 中枢轴的中位数
Posted
技术标签:
【中文标题】Oracle 中枢轴的中位数【英文标题】:Median in Pivot in Oracle 【发布时间】:2019-11-12 21:01:33 【问题描述】:我正在尝试在枢轴块中找到中位数,但由于枢轴需要聚合函数,因此我不断收到以下错误。我认为中位数是一个聚合函数。
下面是我正在使用的代码:-
select * from (
SELECT DISTINCT ACCOUNT.ACCOUNT_KEY,
SUM(ACCT_CURR_AMOUNT) OVER (PARTITION BY trunc(execution_local_date_time,'mm'), ACCOUNT.ACCOUNT_KEY,GROUP_TRANSACTION_TYPE_CD ORDER BY trunc(execution_local_date_time,'mm')) AS SUM_OVER_MONTH,
COUNT(account.ACCOUNT_KEY ) OVER (PARTITION BY trunc(execution_local_date_time,'mm'), ACCOUNT.ACCOUNT_KEY,GROUP_TRANSACTION_TYPE_CD ORDER BY trunc(execution_local_date_time,'mm')) AS COUNT_OVER_MONTH,
GROUP_TRANSACTION_TYPE_CD
FROM CDS_SCHEMA.V_ACCOUNT ACCOUNT
LEFT JOIN V_TRANSACTIONS TRA ON TRA.ACCOUNT_KEY = ACCOUNT.ACCOUNT_KEY and EXECUTION_LOCAL_DATE_TIME BETWEEN '01-JAN-2019' and '30-JUN-2019'
JOIN CDS_SCHEMA.SAM_TRANS_CODE_TYPE_REL TRANS_CODE ON TRA.TRANSACTION_CODE_CD = TRANS_CODE.TRANSACTION_CODE_CD
JOIN CDS_SCHEMA.SAM_TRANS_TYPE_GROUP_REL TRANS_CODE_GRP ON TRANS_CODE_GRP.TRANSACTION_TYPE_CD = TRANS_CODE.TRANSACTION_TYPE_CD AND TRANS_CODE_GRP.GROUP_TRANSACTION_TYPE_CD IN('EFT-INN','EFT-OUT','IFT-INN','IFT-OUT','CCE-INN','CCE-OUT','ALL-INN','ALL-OUT')
where ACCOUNT.ACCOUNT_KEY = '0004447887C1CB00293D55CD3ED1D7B6CB3FE71C'
)a
PIVOT
(
median(SUM_OVER_MONTH) *as* med_val, median(COUNT_OVER_MONTH) as med_vol
FOR GROUP_TRANSACTION_TYPE_CD
IN('EFT-INN','EFT-OUT','IFT-INN','IFT-OUT','CCE-INN','CCE-OUT','ALL-INN','ALL-OUT')
)
在枢轴块中,我不断收到“as”错误。请帮我找到枢轴中的中位数
【问题讨论】:
MEDIAN 可用作聚合函数。 PIVOT 部分似乎没有任何问题。请删除 PIVOT 一词及其后的所有内容,然后尝试执行查询。 @StewAshton 我必须使用数据透视,因为我必须将每个 GROUP_TRANSACTION_TYPE_CD 的中位数作为列名。有没有替代方案 请按照我的要求做,如果有错误信息,请发布。这仅用于调试目的。 请edit 您的问题包括minimal reproducible example 包括您的表的 DDL 语句、一些示例数据的 DML 表和您的预期输出,以便我们可以执行您的查询并知道它应该做什么.没有它,你给了我们一段代码,我们只能目测,但不能运行,这让帮助你变得更加困难;所以请花时间写一个体面的问题,并帮助我们帮助你。 中值在枢轴上工作正常。看这个演示:dbfiddle.uk/… 【参考方案1】:在枢轴块中,我不断收到“as”错误。请帮我找 枢轴中位数
在您的 pivot
子句中将 *as*
更改为 as
,即代替
median(SUM_OVER_MONTH) *as* med_val, median(COUNT_OVER_MONTH) as med_vol
写
median(SUM_OVER_MONTH) as med_val, median(COUNT_OVER_MONTH) as med_vol
【讨论】:
以上是关于Oracle 中枢轴的中位数的主要内容,如果未能解决你的问题,请参考以下文章