इस तरह की तालिका से:
Name | Score
------ | ------
Bill | 1
Bill | 2
Bill | 1
Steve | 1
Steve | 4
Steve | 1
उन लोगों के नाम लौटाएं जिन्होंने कभी 3 . से ऊपर स्कोर नहीं किया है
उत्तर होगा:
Name |
------ |
Bill |
4 जवाब
कुंजी प्रत्येक व्यक्ति के लिए अधिकतम अंक प्राप्त करना है, फिर उन लोगों को फ़िल्टर करें जिनकी अधिकतम 3 से कम है। अधिकतम प्राप्त करने के लिए आपको एक समग्र (GROUP BY
और MAX
) करने की आवश्यकता है। फिर समुच्चय पर फ़िल्टर लागू करने के लिए आपको WHERE
के बजाय HAVING
का उपयोग करना चाहिए। तो आप के साथ समाप्त होगा:
SELECT Name, MAX(Score) AS HighScore
FROM Table
GROUP BY Name
HAVING MAX(Score) <= 3;
एक समाधान होगा:
SELECT DISTINCT name
FROM mytable
WHERE Name NOT IN
( SELECT Name
FROM mytable
WHERE score > 3
)
नमूना तालिका :
DECLARE @Table1 TABLE
(Name varchar(5), Score int)
;
INSERT INTO @Table1
(Name, Score)
VALUES
('Bill', 1),
('Bill', 2),
('Bill', 1),
('Steve', 1),
('Steve', 4),
('Steve', 1)
;
स्क्रिप्ट :
;with CTE AS (
select Name,Score from @Table1
GROUP BY Name,Score
HAVING (Score) > 3 )
Select
NAME,
Score
from @Table1 T
where not EXISTS
(select name from CTE
where name = T.Name )
परिणाम :
NAME Score
Bill 1
Bill 2
Bill 1
SELECT name
FROM table_name
WHERE score < 3
संबंधित सवाल
नए सवाल
sql
संरचित क्वेरी भाषा (एसक्यूएल) डेटाबेस को क्वेरी करने के लिए एक भाषा है। प्रश्नों में कोड उदाहरण, तालिका संरचना, नमूना डेटा और DBMS कार्यान्वयन के लिए एक टैग (जैसे MySQL, PostgreSQL, Oracle, MS SQL Server, IBM DB2, आदि) का उपयोग किया जाना चाहिए। यदि आपका प्रश्न केवल एक विशिष्ट DBMS (विशिष्ट एक्सटेंशन / सुविधाओं का उपयोग करता है) से संबंधित है, तो इसके बजाय उस DBMS के टैग का उपयोग करें। एसक्यूएल के साथ टैग किए गए सवालों के जवाब में आईएसओ / आईईसी मानक एसक्यूएल का उपयोग करना चाहिए।