2017-11-19 2 views
0

私は最低のRAMを持つPCから最高のスピードを選択するクエリを作成しようとしています。この結果SQL:MINクエリの後にMAX結果を依頼する

Speed RAM 
3.2 512 
3.2 1024 
このSQL文

Select Speed, Ram From PC WHERE Speed = (Select Max(Speed) from PC WHERE Ram = (Select DISTINCT RAM FROM PC WHERE RAM = (Select MIN(RAM) FROM PC))); 

を与える使用

RAM 
512 

:このSQLステートメント

Select DISTINCT RAM FROM PC WHERE RAM = (Select MIN(RAM) FROM PC); 

を使用

この結果を与えます

質問に間違っていますか?我々はすでに分(RAM)を選択しているように、第2のレコードは

サンプルデータを示すべきではありません。

CREATE TABLE PC ( model INT PRIMARY KEY, 
        speed NUMBER (4,2), 
        ram INT, 
         hd INT, 
        price NUMBER (7,2) 
       ); 

INSERT INTO PC VALUES (1001, 3.66, 1024, 250, 2114); 
INSERT INTO PC VALUES (1002, 2.10, 512, 250, 995); 
INSERT INTO PC VALUES (1003, 1.42, 512, 80, 478); 
INSERT INTO PC VALUES (1004, 2.80, 1024, 250, 649); 
INSERT INTO PC VALUES (1005, 3.20, 512, 250, 630); 
INSERT INTO PC VALUES (1006, 3.20, 1024, 320, 1049); 
INSERT INTO PC VALUES (1007, 2.20, 1024, 200, 510); 
INSERT INTO PC VALUES (1008, 2.20, 2048, 250, 770); 
INSERT INTO PC VALUES (1009, 2.00, 1024, 250, 650); 
INSERT INTO PC VALUES (1010, 2.80, 2048, 300, 770); 
INSERT INTO PC VALUES (1011, 1.86, 2048, 160, 959); 
INSERT INTO PC VALUES (1012, 2.80, 1024, 160, 649); 
INSERT INTO PC VALUES (1013, 3.06, 512, 80, 529); 
+0

ありがとうございました。将来の情報として、SQLタグを追加したときに、使用している特定のDBMS用のタグを追加することを示唆する大きなポップアップが表示されました。構文と機能が異なるためです。それは理由があります:*構文と機能はDBMSによって異なりますので、あなたが使用しているものを教えてください。*無視しないでください。 –

+0

今後DBタイプを追加します。ありがとう! –

答えて

2

あなたは物事をovercomplicate。

最小ラムを選択するために、あなたはこれにあなたの文を短くすることができます。

SELECT MIN(RAM) FROM PC 

を最小ラムの最大速度を選択するために、これを使用する:

SELECT MAX(speed) FROM PC where RAM = (SELECT MIN(RAM) FROM PC) 
+0

これは素晴らしい動作します。ありがとうございました! –

0

これはあまりにもではありません

SELECT model, speed, ram, price 
FROM 
(
    SELECT model, speed, ram, price, RANK() OVER (ORDER BY speed DESC) rn2 
    FROM 
    (
     SELECT model, speed, ram, price, RANK() OVER (ORDER BY ram) rn1 
     FROM PC 
    ) t 
    WHERE rn1 = 1 
) t 
WHERE rn2 = 1; 

このアプローチの利点は、一致するレコード全体。

+0

Um ...これは質問された質問に答えません。それはまた、非常に単純なクエリのための広大な複雑さのように思えます。 (downvotingではなく、ちょうど...) –

+0

@KenWhiteこれは、min RAMを持つすべてのレコードを見つけ出し、それらの最小レコードの中から最大速度を持つレコードを見つけます。多くの場合、このような質問へのフォローアップは「他の列はどうですか?」となります。受け入れられた答えはあまり役に立たないでしょう。 –

関連する問題