यहाँ एक है जो संबंधों के लिए जिम्मेदार है।
Name Salary
Jim 6
Foo 5
Bar 5
Steve 4
SELECT name, salary
FROM employees
WHERE salary = (SELECT MAX(salary) FROM employees WHERE salary < (SELECT MAX(salary) FROM employees))
Result --> Bar 5, Foo 5
संपादित करें: मैंने मनोज की दूसरी पोस्ट ली, उसमें बदलाव किया, और इसे थोड़ा और मानवीय पठनीय बना दिया। मेरे लिए n-1 सहज नहीं है; हालांकि, मैं जो मान चाहता हूं उसका उपयोग करना, 2=2nd, 3=3rd, आदि है।
/* looking for 2nd highest salary -- notice the '=2' */
SELECT name,salary FROM employees
WHERE salary = (SELECT DISTINCT(salary) FROM employees as e1
WHERE (SELECT COUNT(DISTINCT(salary))=2 FROM employees as e2
WHERE e1.salary <= e2.salary)) ORDER BY name
Result --> Bar 5, Foo 5