我有以下查詢:Oracle11g的 - 獲取了GROUP BY和最大值順序按
SELECT CC.phone_ID,
COUNT(CC.phone_id) "Count",
PR.manuf_id
FROM CONTRACT_CELLPHONE CC
INNER JOIN product PR ON CC.phone_id = PR.product_id
GROUP BY CC.phone_id,
PR.manuf_id
ORDER BY 3;
這給了我下面的輸出:
PHONE_ID COUNT(CC.PHONE_ID) MANUF_ID
---------- ------------------ ----------
87555 6 567000
43342 2 567001
58667 3 567001
46627 5 567002
11243 3 567003
87549 3 567003
86865 2 567005
65267 4 567006
8 rows selected.
我想獲取手機的phone_id
每manufacturer
有最高count
。事情是這樣的:
PHONE_ID COUNT(CC.PHONE_ID) MANUF_ID
---------- ------------------ ----------
87555 6 567000
58667 3 567001
46627 5 567002
11243 3 567003
87549 3 567003
86865 2 567005
65267 4 567006
這是主數據集:
SQL> SELECT * FROM CONTRACT_CELLPHONE CC INNER JOIN product PR ON CC.phone_id = PR.product_id;
CONTRACT_ID PHONE_ID SEQ# PAIDPRICE ESN PRODUCT_ID NAME MANUF_ID COSTPAID BASEPRICE TYPE
----------- ---------- ---------- ---------- ---------- ---------- ------------------------------ ---------- ---------- ---------- ---------
10010 11243 1 310 1234567890 11243 Galaxy 567003 276 345 CellPhone
10011 11243 1 310 1232145654 11243 Galaxy 567003 276 345 CellPhone
10011 87549 2 320 2323565678 87549 Galaxy 567003 280 350 CellPhone
10012 58667 1 300 3452123533 58667 Droid 567001 275 320 CellPhone
10013 87555 1 425 3445421789 87555 iPhone 567000 360 450 CellPhone
10014 65267 1 85 8752570865 65267 Bold 567006 63.75 75 CellPhone
10014 65267 2 85 5421785345 65267 Bold 567006 63.75 75 CellPhone
10014 65267 3 85 3454323457 65267 Bold 567006 63.75 75 CellPhone
10016 46627 1 250 9876554321 46627 HTC One 567002 200 250 CellPhone
10016 65267 2 85 1002938475 65267 Bold 567006 63.75 75 CellPhone
10017 46627 1 250 8766543289 46627 HTC One 567002 200 250 CellPhone
10018 87555 1 425 3454334532 87555 iPhone 567000 360 450 CellPhone
10019 43342 1 450 2334567654 43342 Droid 567001 400 500 CellPhone
10020 87549 1 320 2345678912 87549 Galaxy 567003 280 350 CellPhone
10021 87555 1 425 3456129642 87555 iPhone 567000 360 450 CellPhone
10021 87555 2 425 8732786480 87555 iPhone 567000 360 450 CellPhone
10022 46627 1 250 5634512345 46627 HTC One 567002 200 250 CellPhone
10023 11243 1 300 1276349812 11243 Galaxy 567003 276 345 CellPhone
10024 46627 1 250 3456123457 46627 HTC One 567002 200 250 CellPhone
10025 58667 1 300 5438767651 58667 Droid 567001 275 320 CellPhone
10026 87555 1 425 6541835680 87555 iPhone 567000 360 450 CellPhone
10027 86865 1 210 9826485932 86865 Lumia 567005 160 200 CellPhone
10028 86865 1 210 3218759604 86865 Lumia 567005 160 200 CellPhone
10029 87549 1 320 4328753902 87549 Galaxy 567003 280 350 CellPhone
10030 58667 1 300 9742467907 58667 Droid 567001 275 320 CellPhone
10031 46627 1 250 2938465831 46627 HTC One 567002 200 250 CellPhone
10032 87555 1 425 2319347891 87555 iPhone 567000 360 450 CellPhone
10033 43342 1 450 2319752032 43342 Droid 567001 400 500 CellPhone
28 rows selected.
我使用MAX
嘗試,但它給了我一個錯誤。
有人可以幫忙嗎?
我編輯我的答案,因爲** ** DENSE_RANK是更好的貼合,** ** ROW_NUMBER將跳過類似的計數。看到我的答案。 – 2015-04-04 08:59:33