SQL Assignment – Module 5
SQL Assignment – Module 5 SQL Assignment – Module 5
Questions :
1. Display the names of the highest paid programmers for each Language.
2. Display the details of those who are drawing the same salary.
3. Who are the programmers who joined on the same day?
4. Who are the programmers who have the same Prof2?
5. How many packages were developed by the person who developed the cheapest package, where did he/she study?
Answer :
---ARNAB BOSE---
SELECT * FROM PROGRAMMER
SELECT * FROM SOFTWARE
SELECT * FROM STUDIES
---Q1---
WITH LanguageHighestPaid AS (
SELECT DISTINCT
PROF1 AS LANGUAGE,
FIRST_VALUE(PNAME) OVER(PARTITION BY PROF1 ORDER BY SALARY DESC) AS HIGHEST_PAID_PROGRAMMER
FROM PROGRAMMER
UNION
SELECT DISTINCT
PROF2 AS LANGUAGE,
FIRST_VALUE(PNAME) OVER(PARTITION BY PROF2 ORDER BY SALARY DESC) AS HIGHEST_PAID_PROGRAMMER
FROM PROGRAMMER
)
SELECT * FROM LanguageHighestPaid
---OR---
SELECT
lang.prof,
(
SELECT TOP 1 pname
FROM programmer
WHERE prof1 = lang.prof OR prof2 = lang.prof
ORDER BY salary DESC
) as Name,
(
SELECT MAX(Salary)
FROM programmer
WHERE prof1 = lang.prof OR prof2 = lang.prof
) as MaxSalary
FROM (
SELECT prof1 as prof FROM programmer
UNION
SELECT prof2 as prof FROM programmer
) AS lang
---OR---
WITH cte AS (
SELECT PNAME, SALARY, PROF1 PROF FROM programmer
UNION
SELECT PNAME, SALARY, PROF2 FROM programmer
)
SELECT p1.PNAME, p1.PROF, p1.SALARY
FROM cte p1
LEFT JOIN cte p2
ON p1.PROF = p2.PROF AND p1.SALARY < p2.SALARY
WHERE p2.PNAME IS NULL
---ARNAB BOSE---
---Q2---
SELECT P1.PNAME Programmer1,
P1.SALARY Salary,
P2.PNAME Programmer2
FROM PROGRAMMER P1
INNER JOIN PROGRAMMER P2
ON P1.SALARY = P2.SALARY
AND
P1.PNAME != P2.PNAME
ORDER BY Salary
---OR---
Select * From PROGRAMMER Where Salary in
(Select Salary From PROGRAMMER Group by Salary Having Count(Salary ) > 1)
---ARNAB BOSE---
---Q3---
SELECT P1.PNAME Programmer1,
P1.DOJ DOJ,
P2.PNAME Programmer2
FROM PROGRAMMER P1
INNER JOIN PROGRAMMER P2
ON P1.DOJ= P2.DOJ
AND
P1.PNAME != P2.PNAME
ORDER BY P1.DOJ
---OR---
select a.pname,a.doj from programmer a,PROGRAMMER b
where a.doj=b.doj and a.pname <> b.pname
---OR--
SELECT DOJ, STRING_AGG(PNAME, ', ') AS JoinedProgrammers
FROM PROGRAMMER
GROUP BY DOJ
HAVING COUNT(*) > 1
---ARNAB BOSE---
---Q4---
SELECT P1.PNAME AS Programmer1, P2.PNAME AS Programmer2, P1.PROF2 AS CommonProf2
FROM PROGRAMMER P1
JOIN PROGRAMMER P2 ON P1.PROF2 = P2.PROF2 AND P1.PNAME < P2.PNAME
---OR---
SELECT DISTINCT a.pname, a.prof2
FROM PROGRAMMER a, PROGRAMMER b
WHERE a.prof2 = b.prof2 AND a.pname <> b.pname
---Q5---
SELECT
P.PNAME,
COUNT(S.PNAME) AS Total_Developed_Packages,
MIN(S.DCOST) AS Minimum_Cost
FROM
PROGRAMMER P
LEFT JOIN
SOFTWARE S ON P.PNAME = S.PNAME
GROUP BY
P.PNAME
---ARNAB BOSE---
Comments
Post a Comment