各部門の上位 10 人の従業員を順番に一覧表示するにはどうすればよいですか? また、各部門の従業員は、購入の合計額に基づいて順序付けする必要があります。
これらはテーブルです:
CREATE TABLE EMP (
EMPNO NUMBER(4),
ENAME VARCHAR2(20),
POSITION VARCHAR2(20),
DEPTNO NUMBER(2)
);
CREATE TABLE DEPT (
DEPTNO NUMBER(2),
DNAME VARCHAR2(20)
);
CREATE TABLE CLIENT (
CLIENTNO NUMBER(5),
CNAME VARCHAR2(20),
PHONE VARCHAR2(10)
);
CREATE TABLE PURCHASE (
PURCHASENO NUMBER(5),
RECEIPTNO NUMBER(6),
SERVICETYPE VARCHAR2(25),
PAYMENTTYPE VARCHAR2(10),
GST VARCHAR2(3),
AMOUNT NUMBER(4),
SERVEDBY NUMBER(4),
CLIENTNO NUMBER(5)
);
試みて編集された:
SELECT DISTINCT *
FROM (SELECT E.ENAME, D.DEPTNO, COUNT(P.PURCHASENO) AS TOTALAMOUNT,
AVG(P.AMOUNT)AS AVGAMOUNT, MAX(P.AMOUNT)AS HIGHESTAMOUNT,
SUM(P.AMOUNT)AS TOTALAMOUNTPURCHASE,
DENSE_RANK() OVER(PARTITION BY DEPTNO ORDER BY AMOUNT DESC)RANK
FROM EMP E, DEPT D, PURCHASE P
)
WHERE RANK<=10