SQL Challenges-1: Third Highest Sale
From the following table, write a SQL query to find the third highest sale. Return sale amount.
Input:
Table: salesemast
Structure:
Field | Type | Null | Key | Default | Extra |
---|---|---|---|---|---|
sale_id | int(11) | YES | |||
employee_id | int(11) | YES | |||
sale_date | date | YES | |||
sale_amt | int(11) | YES |
Data:
sale_id | employee_id | sale_date | sale_amt |
---|---|---|---|
1 | 1000 | 2012-03-08 | 4500 |
2 | 1001 | 2012-03-09 | 5500 |
3 | 1003 | 2012-04-10 | 3500 |
3 | 1003 | 2012-04-10 | 2500 |
Sample Solution:
SQL Code(MySQL):
CREATE TABLE If Not Exists salemast(sale_id int, employee_id int, sale_date date, sale_amt int);
TRUNCATE TABLE salemast;
INSERT INTO salemast (sale_id, employee_id, sale_date, sale_amt) VALUES ('1', '1000', '2012-03-08', 4500);
INSERT INTO salemast (sale_id, employee_id, sale_date, sale_amt) VALUES ('2', '1001', '2012-03-09', 5500);
INSERT INTO salemast (sale_id, employee_id, sale_date, sale_amt) VALUES ('3', '1003', '2012-04-10', 3500);
INSERT INTO salemast (sale_id, employee_id, sale_date, sale_amt) VALUES ('3', '1003', '2012-04-10', 2500);
SELECT * FROM salemast;
SELECT DISTINCT sale_amt AS SecondHighestSale
FROM salemast
ORDER BY sale_amt DESC
LIMIT 1 OFFSET 1;
Sample Output:
SecondHighestSale| -----------------| 4500|
Solution-1:
SELECT MAX(sale_amt) AS SecondHighestSale
FROM (SELECT DISTINCT sale_amt
FROM salemast ORDER BY sale_amt DESC LIMIT 2 offset 1) AS sale;
Solution-2:
SELECT MAX(sale_amt) AS SecondHighestSale
FROM salemast
WHERE sale_amt<(SELECT MAX(sale_amt) FROM salemast);
SQL Code Editor:
Contribute your code and comments through Disqus.
Previous: Combine two tables.
Next: Nth Highest Sale amount.
- Weekly Trends and Language Statistics
- Weekly Trends and Language Statistics