17,082
社区成员
发帖
与我相关
我的任务
分享
SELECT CUST_NBR,REGION_ID,YEAR, SUM(TOT_SALES) AS CUST_TOT,
SUM(SUM(TOT_SALES)) OVER(PARTITION BY REGION_ID,YEAR ORDER BY YEAR,REGION_ID) AS REGION_TOT
FROM ORDERS_TMP
GROUP BY REGION_ID,YEAR,CUST_NBR
ORDER BY YEAR,REGION_ID,CUST_NBR
create table orders_tmp
(CUST_NBR NUMBER(5) NOT NULL,
REGION_ID NUMBER(5) NOT NULL,
SALESPERSON_ID NUMBER(5) NOT NULL,
YEAR NUMBER(4) NOT NULL,
MONTH NUMBER(2) NOT NULL,
TOT_ORDERS NUMBER(7) NOT NULL,
TOT_SALES NUMBER(11,2) NOT NULL);
INSERT INTO orders_tmp VALUES('11','7',' 11 ','2001 ','7','2','12204 ') ;
INSERT INTO orders_tmp VALUES(' 4','5','4 ','2001 ',' 10','2','37802 ') ;
INSERT INTO orders_tmp VALUES(' 7','6','7 ','2001 ','2','3',' 3750 ' ) ;
INSERT INTO orders_tmp VALUES('10','6','8 ','2001 ','1','2','21691 ' ) ;
INSERT INTO orders_tmp VALUES('10','6','7 ','2001 ','2','3','42624 ' ) ;
INSERT INTO orders_tmp VALUES('15','7',' 12 ','2000 ','5','6',' 24 ' ) ;
INSERT INTO orders_tmp VALUES('12','7','9 ','2000 ','6','2','50658 ' ) ;
INSERT INTO orders_tmp VALUES(' 1','5','2 ','2000 ','3','2','44494 ' ) ;
INSERT INTO orders_tmp VALUES(' 1','5','1 ','2000 ','9','2','74864 ' ) ;
INSERT INTO orders_tmp VALUES(' 2','5','4 ','2000 ','3','2','35060 ' ) ;
INSERT INTO orders_tmp VALUES(' 2','5','4 ','2000 ','4','4',' 6454 ' ) ;
INSERT INTO orders_tmp VALUES(' 2','5','1 ','2000 ',' 10','4','35580' ) ;
INSERT INTO orders_tmp VALUES(' 4','5','4 ','2000 ',' 12','2','39190' ) ;
SELECT CUST_NBR,REGION_ID,YEAR, SUM(TOT_SALES) AS CUST_TOT,
avg((sum(TOT_SALES)) OVER(PARTITION BY REGION_ID,YEAR ORDER BY YEAR,REGION_ID) AS REGION_TOT,
ROUND(RATIO_TO_REPORT(SUM(TOT_SALES)) OVER (PARTITION BY REGION_ID,YEAR),3) * 100 ||'%' AS CUST_SALES_RATIO
FROM ORDERS_TMP
GROUP BY REGION_ID,YEAR,CUST_NBR
ORDER BY YEAR,REGION_ID,CUST_NBR
SQL>
SQL> SELECT t.sws_dm,t.sws_mc,SUM(ry_dm) ,SUM(ry_dm)over(PARTITION BY sws_dm)
2 FROM test t
3 GROUP BY t.sws_dm,t.sws_mc ;
SELECT t.sws_dm,t.sws_mc,SUM(ry_dm) ,SUM(ry_dm)over(PARTITION BY sws_dm)
FROM test t
GROUP BY t.sws_dm,t.sws_mc
ORA-00979: not a GROUP BY expression
SQL>
SQL> SELECT t.sws_dm,t.sws_mc,SUM(ry_dm) ,sum(SUM(ry_dm))over(PARTITION BY sws_dm)
2 FROM test t
3 GROUP BY t.sws_dm,t.sws_mc ;
SWS_DM SWS_MC SUM(RY_DM) SUM(SUM(RY_DM))OVER(PARTITIONB
---------- ---------- ---------- ------------------------------
1 第一税务所 510 510
2 第二税务所 1010 1010
3 第三税务所 1510 1510
4 第四税务所 1610 1610
5 第五税务所 500 500
SQL>
SQL> SELECT t.sws_dm,t.sws_mc,SUM(ry_dm)over(PARTITION BY sws_dm)
2 FROM test t
3 ;
SWS_DM SWS_MC SUM(RY_DM)OVER(PARTITIONBYSWS_
---------- ---------- ------------------------------
1 第一税务所 510
1 第一税务所 510
1 第一税务所 510
1 第一税务所 510
1 第一税务所 510
2 第二税务所 1010
2 第二税务所 1010
2 第二税务所 1010
2 第二税务所 1010
2 第二税务所 1010
3 第三税务所 1510
3 第三税务所 1510
3 第三税务所 1510
3 第三税务所 1510
3 第三税务所 1510
4 第四税务所 1610
4 第四税务所 1610
4 第四税务所 1610
4 第四税务所 1610
5 第五税务所 500
20 rows selected
SQL>
SELECT CUST_NBR,REGION_ID,YEAR, SUM(TOT_SALES) AS CUST_TOT,
SUM(TOT_SALES) OVER(PARTITION BY REGION_ID,YEAR ORDER BY YEAR,REGION_ID) AS REGION_TOT
FROM ORDERS_TMP
GROUP BY REGION_ID,YEAR,CUST_NBR
ORDER BY YEAR,REGION_ID,CUST_NBR
SQL> SELECT t.sws_dm,t.sws_mc,SUM(ry_dm)over(PARTITION BY sws_dm)
2 FROM test t
3 ;
SWS_DM SWS_MC SUM(RY_DM)OVER(PARTITIONBYSWS_
---------- ---------- ------------------------------
1 第一税务所 510
1 第一税务所 510
1 第一税务所 510
1 第一税务所 510
1 第一税务所 510
2 第二税务所 1010
2 第二税务所 1010
2 第二税务所 1010
2 第二税务所 1010
2 第二税务所 1010
3 第三税务所 1510
3 第三税务所 1510
3 第三税务所 1510
3 第三税务所 1510
3 第三税务所 1510
4 第四税务所 1610
4 第四税务所 1610
4 第四税务所 1610
4 第四税务所 1610
5 第五税务所 500
20 rows selected
SQL>