Oracle语句求解~高手进

问题是这样的有一个bill表bill有字段saledate(交易日期)、totalmoney(交易总金额)求如何根据时间分组,并且求出当天的交易平均数、昨天的交易平均数、... 问题是这样的
有一个bill表 bill有字段 saledate(交易日期) 、 totalmoney(交易总金额)
求如何根据时间分组,并且求出当天的交易平均数、昨天的交易平均数 、去年当天的交易平均数 要求时间格式为(yyyy-MM-dd)
查询格式如下
时间 今天平均交易金额 昨天的交易平均数 去年当天的交易平均数
2009-1-1 40 30 20
2010-1-1 40 30 20
2010-1-1 50 40 40
展开
 我来答
dngoryaner
2013-02-27 · TA获得超过2350个赞
知道小有建树答主
回答量:2404
采纳率:0%
帮助的人:1132万
展开全部
oracle
selelect saledate ,sum('今天平均交易金额' ),
sum('昨天的交易平均数' ),
sum('去年当天的交易平均数' )
from (
select saledate '时间',
case when flag='1' then totalmoney/c else 0 end '今天平均交易金额' ,
case when flag='2' then totalmoney/c else 0 end '昨天的交易平均数' ,
case when flag='3' then totalmoney/c else 0 end '去年当天的交易平均数'
from (
select '1' flag,saledate,count(交易数)c,sum(totalmoney)totalmoney from bill where saledate=当天日期--to_char(sysdate,'yyyy-mm-dd')
union
select '2'flag,saledate,count(交易数),sum(totalmoney) from bill where saledate=昨天日期--to_char(sysdate-1,'yyyy-mm-dd')
union
select '3'flag,saledate,count(交易数),sum(totalmoney) from bill where saledate=去年当天日期--to_char((SYSDATE -INTERVAL '1'),'yyyy-mm-dd')
) temp group by saledate
)temp group by saledate;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-02-27
展开全部
-- 测试数据.

CREATE TABLE bill (
saledate DATE,
totalmoney INT
);

INSERT INTO bill VALUES( sysdate, 30);
INSERT INTO bill VALUES( sysdate, 50);

INSERT INTO bill VALUES( sysdate - 1, 40);
INSERT INTO bill VALUES( sysdate - 1, 60);
INSERT INTO bill VALUES( ADD_MONTHS(sysdate, -12), 20);
INSERT INTO bill VALUES( ADD_MONTHS(sysdate, -12), 30);

-- 查询 SQL。
With cte AS (
SELECT
trunc(saledate) AS saledate,
AVG(totalmoney) AS avgmoney
FROM
bill
GROUP BY
trunc(saledate)
)
SELECT
*
FROM cte
MODEL
DIMENSION BY (saledate)
MEASURES(avgmoney, 0 AS PrevDay_avgmoney, 0 AS PrevYear_avgmoney)
(
PrevDay_avgmoney[ANY] = avgmoney[CV(saledate) - 1],
PrevYear_avgmoney[ANY] = avgmoney[ ADD_MONTHS( CV(saledate), -12) ]
)
ORDER BY
saledate;

-- 查询结果:

SALEDATE AVGMONEY PREVDAY_AVGMONEY PREVYEAR_AVGMONEY
---------- ---------- ---------------- -----------------
27-2月 -12 25
26-2月 -13 50
27-2月 -13 40 50 25

SQL>
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式