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

私は何を達成しようとしていることはすべての書籍SQLない単一グループのグループ関数計算

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

'セレクトCATEGORY、TI TLE、小売 書籍BOOKS リテール<(書籍からMAX(COST)を選択) ORDER BYカテゴリASC; ' –

+0

MySQLの返品Oracleエラーコード?確かに正しいタグがありますか? – jarlh

+0

@FelixPamittan - 答え、コメントではありません。それはまた、これまでに提供された最高の答えであることも起こります。あなたはそれをコメントから答えに変えることを検討したいかもしれません。 – mathguy

答えて

0
のMAXコスト未満の小売価格を表示することです
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'は、Oracle(または標準SQL)の無効なステートメントで、適切なステートメント終端文字で置き換えることができます:'; 'これを有効にするSQL –

+0

' MONEY'はOracleのデータ型ではありません。それとは別に、あなたの質問は非効率的です。サブクエリ内のすべての行を順序付けします。最大値のみが必要な場合です。セットの最大値を見つけることは、セット全体をオーダーすることよりはるかに少ない仕事です。 – mathguy

0

これを試してみてください。..

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; 
関連する問題