我的情况是,A人每年都可以销售产品A.根据这些信息,我必须计算他们在当月销售大部分产品A的月份。
如果他们在1月份销售10件产品,在8月份和10月10日销售6件,我会把最新月份的信息(在这种情况下是10月份)。
但是,我想要包含某种跟踪器,该跟踪器会说明当年的当前MAX是否已在年初的某个时间点与人A相等,我想计算出现的数量。如果A人继续在Novemeber卖15,那么柜台应该重新启动。
当前数据=
EMP PRODUCT MONTH VOLUME
---------------------------------------------------
A A 1 10
A A 8 6
A A 10 10
AIM =
EMP PRODUCT MAX(VOLUME) COUNT
---------------------------------------------------
A A 10 2
关于解决此问题的最有效方法的任何建议都会很棒!
答案 0 :(得分:1)
CREATE TABLE MY_TABLE (EMP VARCHAR2(10), PRODUCT VARCHAR2(10), MONTH NUMBER, VOLUME NUMBER);
INSERT INTO MY_TABLE VALUES ('A', 'A', 1, 10);
INSERT INTO MY_TABLE VALUES ('A', 'A', 8, 6);
INSERT INTO MY_TABLE VALUES ('A', 'A', 10, 10);
COMMIT;
--EMP PRODUCT MONTH VOLUME
-----------------------------------------------------
--A A 1 10
--A A 8 6
--A A 10 10
SELECT EMP,
PRODUCT,
VOLUME,
MY_COUNT
FROM ( SELECT EMP,
PRODUCT,
VOLUME,
COUNT (MY_RANK) MY_COUNT,
RANK () OVER (PARTITION BY EMP, PRODUCT ORDER BY VOLUME DESC)
MY_SECOND_RANK
FROM (SELECT EMP,
PRODUCT,
volume,
RANK ()
OVER (PARTITION BY EMP, PRODUCT
ORDER BY VOLUME DESC, MONTH DESC)
MY_RANK
FROM MY_TABLE)
GROUP BY EMP, PRODUCT, VOLUME)
WHERE MY_SECOND_RANK = 1;