17,086
社区成员
发帖
与我相关
我的任务
分享
SELECT B.KIND, SUM(T.AVG_NUM)
FROM B, (SELECT A.NO, A.NUM/(SELECT COUNT(*) FROM B WHERE B.NO=A.NO) AVG_NUM FROM A) T
WHERE B.NO = T.NO
GROUP BY B.KIND
SELECT DISTINCT B.KIND,
SUM(ROUND(A.NUM / (SELECT COUNT(B.NO)
FROM B
WHERE A.NO = B.NO
GROUP BY B.NO),
2)) OVER(PARTITION BY B.KIND)
FROM A, B
WHERE A.NO = B.NO;
SELECT KIND, SUM(AVG_NUM) AS NUM
FROM (
SELECT
ROUND(A.NUM/COUNT(B.ROWID) OVER (PARTITION BY B.NO ORDER BY B.NO),2) AVG_NUM,
B.KIND
FROM A, B WHERE A.NO = B.NO
)
GROUP BY KIND
SQL> with a as (select 'A' NO,10 NUM FROM DUAL
2 UNION
3 select 'B' NO,20 NUM FROM DUAL
4 UNION
5 select 'C' NO,30 NUM FROM DUAL
6 ),
7 B AS (SELECT 'A' NO,'01' KIND FROM DUAL
8 UNION
9 SELECT 'A' NO,'02' KIND FROM DUAL
10 UNION
11 SELECT 'B' NO,'01' KIND FROM DUAL
12 UNION
13 SELECT 'B' NO,'02' KIND FROM DUAL
14 UNION
15 SELECT 'B' NO,'03' KIND FROM DUAL
16 UNION
17 SELECT 'C' NO,'05' KIND FROM DUAL
18 UNION
19 SELECT 'C' NO,'09' KIND FROM DUAL
20 )
21 SELECT B.KIND,SUM(ROUND(A.NUM/NO1,2)) NUM FROM A,(SELECT A.NO,COUNT(B.NO) NO1 FROM A,B WHERE A.NO=B.NO
22 GROUP BY A.NO) C,B
23 WHERE A.NO=C.NO AND A.NO=B.NO
24 GROUP BY B.KIND
25 ORDER BY B.KIND
SQL> /
KIND NUM
---- ----------
01 11.67
02 11.67
03 6.67
05 15
09 15