Защо втората ви заявка не работи...
изберете Item_No, Quantityfrom Rec_detailsgroup by Item_No, Quantityhaving Quantity=max(Quantity);
Вие групирате и по Item_No
и Количество
и Item_No
изглежда като първичен ключ и съдържа уникални стойности, така че всяка група ще съдържа само един ред. ИМАНЕ
клаузата търси в групата, така че ще провери дали стойността на количество
е максималната стойност в тази група, но има само една стойност в групата, така че това винаги ще бъде вярно. Вашата заявка е еквивалентна на:
ИЗБЕРЕТЕ ОТДЕЛЕН Артикул_No, КоличествоFROM Rec_details;
Някои други начини за получаване на максимална стойност:
Настройка на схема на Oracle 11g R2 :
създайте таблица Rec_details (item_no, Quantity ) ASSELECT 12507,1 FROM DUAL UNION ALLSELECT 12549,4 FROM DUAL UNION ALLSELECT 12100,8 FROM DUAL UNION ALLSELECT 12501,2 FROM DUAL UNION ALLSELECT 12201,7 FROM DUAL UNION ALLSELECT 12509,3 FROM DUAL UNION ALLSELECT 12080,1 FROM DUAL;
Заявка 1 - Вземете един ред с максимално количество
и последния item_no
(използване на сканиране на 1 таблица) :
SELECT MAX( item_no ) KEEP ( DENSE_RANK LAST ORDER BY Quantity ) AS Item_no, MAX( Quantity ) AS QuantityFROM Rec_Details
<предварителен код>| АРТИКУЛ_NO | КОЛИЧЕСТВО ||---------|----------|| 12100 | 8 |
Заявка 2 - Вземете един ред с максимално количество
и последния item_no
(използване на сканиране на 1 таблица) :
SELECT *FROM ( SELECT * FROM Rec_details ORDER BY Quantity DESC, Item_no DESC)WHERE ROWNUM =1
<предварителен код>| АРТИКУЛ_NO | КОЛИЧЕСТВО ||---------|----------|| 12100 | 8 |
Заявка 3 - Вземете всички редове с максимално количество
(използване на сканиране на 1 таблица) :
SELECT Item_no, QuantityFROM ( SELECT r.*, RANK() OVER ( ORDER BY Quantity DESC ) AS rnk FROM Rec_details r)WHERE rnk =1
<предварителен код>| АРТИКУЛ_NO | КОЛИЧЕСТВО ||---------|----------|| 12100 | 8 |
Заявка 4 - Вземете всички редове с максимално количество
(използвайки 2 сканирания на таблици) :
SELECT Item_no, QuantityFROM Rec_DetailsWHERE Quantity =( SELECT MAX( Quantity ) FROM Rec_Details )
<предварителен код>| АРТИКУЛ_NO | КОЛИЧЕСТВО ||---------|----------|| 12100 | 8 |