CREATE TABLE `Emp_Det` (
`Emp_ID` int(11) default NULL,
`Emp_name` varchar(100) default NULL,
`Salary` decimal(18,3) default NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
INSERT INTO `Emp_Det` (`Emp_ID`, `Emp_name`, `Salary`) VALUES`Emp_ID` int(11) default NULL,
`Emp_name` varchar(100) default NULL,
`Salary` decimal(18,3) default NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
(1, 'Prakash', 1000.000),
(2, 'Praful', 1200.000),
(3, 'Manish', 1100.000),
(10, 'Nilesh', 900.000),
(11, 'Chetan', 1200.000);1) To find Second Max salary
SELECT max( Salary )
FROM Emp_Det
WHERE Salary NOT
IN (
SELECT max( Salary )
FROM Emp_Det
O/p:
| max(Salary) |
|---|
| 1100.000 |
2) To find Second Max salary with Description
SELECT *
FROM `Emp_Det`
WHERE Salary NOT
IN (
SELECT max( Salary )
FROM `Emp_Det`
ORDER BY salary DESC
LIMIT 1 ;
ORSELECT *
FROM Emp_det
WHERE Salary = (
SELECT Max( Salary )
FROM Emp_det
WHERE Salary < (
SELECT Max( Salary )
FROM Emp_det ) ) ;
O/p:-
| Emp_ID | Emp_name | Salary | |||
|---|---|---|---|---|---|
| 3 | Manish | 1100.000 | |||
1) To Find Duplicate Salary
SELECT Salary
FROM Emp_Det
GROUP BY Salary
HAVING count( * ) >1
LIMIT 0 , 30
O/p:
| Salary | |||
|---|---|---|---|
| 1200.000 | |||
1) How to use case in mysql?
SELECT a.id, a.name,
CASE b.Salary
WHEN 0
THEN 'Absent'
ELSE '1000'
END AS Salary
FROM animal a, emp_det b
WHERE a.id = b.Emp_ID
LIMIT 0 , 30
=========================================================
How to write a query to get the second largest value from a given column of a table?
Ans:
This is a query to get the second largest value from a given column of a table,
SELECT MAX(COLUMN_NAME) FROM TABLE_NAME
WHERE COLUMN_NAME <
(SELECT MAX(COLUMN_NAME) FROM TABLE_NAME)
For Example:-
To get the second largest marks from “Marks” column of a “Students” table
Select Max(Marks) from Students
Where Marks< (Select Max(Marks) from students)
How to write a query to get 10thhighest salary from an employee table?
Ans:
This is a query to get nth highest salary from an employee table,
SELECT *
FROM Employee Emp1
WHERE ( n ) = (
SELECT COUNT( DISTINCT ( Emp2.Employee_Salary ) )
FROM Employee Emp2
WHERE Emp2.Employee_Salary >= Emp1.Employee_Salary
)
Here, you can replace the n with any number. For example, if you want to get10th highest salary, then replace n with 10.
SELECT *
FROM Employee Emp1
WHERE (10) = (
SELECT COUNT( DISTINCT ( Emp2.Employee_Salary ) )
FROM Employee Emp2
WHERE Emp2.Employee_Salary >= Emp1.Employee_Salary
)
===================================================
Comments
Post a Comment