2016-05-27 6 views
0
Select CATEGORY, TITLE, RETAIL 
From BOOKS 
Where RETAIL = (SELECT RETAIL-max(COST) From Books) 
ORDER BY Category ASC; 

Was ich versuche zu erreichen ist die Einzelhandelspreise zu zeigen, die kleiner sind als die MAX Kosten aller BücherSQL nicht eine einzige Gruppengruppenfunktion Berechnung

Beispiel

MAX COST = $44 
Display number of retail items that are LESS than $44 
+2

'Kategorie wählen, TI TLE, RETAIL Von BÜCHERN Wo RETAIL <(SELECT MAX (COST) aus Bücher) ORDER BY Kategorie ASC; ' –

+0

MySQL zurück Oracle Fehlercodes? Sicher hast du die richtigen Tags? – jarlh

+0

@FelixPamittan - das ist eine Antwort, kein Kommentar. Es ist auch die beste Antwort, die bisher angeboten wurde. Vielleicht möchten Sie es von einem Kommentar zu einer Antwort ändern. – mathguy

Antwort

0
CREATE TABLE TBL_BOOKS_PRICE 
(
BOOK VARCHAR(24), 
PRICE MONEY 
) 
GO 

INSERT INTO TBL_BOOKS_PRICE 
VALUES('BOOK1',33.00) 
GO 

INSERT INTO TBL_BOOKS_PRICE 
VALUES('BOOK1',44.00) 
GO 

INSERT INTO TBL_BOOKS_PRICE 
VALUES('BOOK1',43.00) 
GO 

INSERT INTO TBL_BOOKS_PRICE 
VALUES('BOOK1',38.00) 
GO 

SELECT BOOK,PRICE FROM 
(
SELECT ROW_NUMBER() OVER (ORDER BY PRICE DESC) ID,* FROM TBL_BOOKS_PRICE 
) A 
WHERE ID<>1; 
+0

"GO" ist eine ungültige Anweisung in Oracle (oder Standard-SQL), die Sie möglicherweise durch das richtige Statement-Terminator ersetzen möchten: ';', um dieses gültige SQL –

+0

'MONEY' ist kein Oracle-Datentyp. Abgesehen davon - Ihre Anfrage ist ineffizient; Er ordnet alle Zeilen in der Unterabfrage an, wenn nur der Maximalwert benötigt wird. Das Maximum eines Satzes zu finden, ist viel weniger Arbeit als das Bestellen des ganzen Satzes. – mathguy

0

die Sie interessieren ..

with tmp as (
select category, title, retail, max(cost) as retail_max_cost 
from books group by category, title, retail) 

select category, title, retail from tmp 
where retail < retail_max_cost order by category;