Very Famous SQL Interview Question | Department Highest Salary

แชร์
ฝัง
  • เผยแพร่เมื่อ 18 ม.ค. 2025

ความคิดเห็น • 37

  • @sumitmittal07
    @sumitmittal07  2 ปีที่แล้ว

    Checkout the Big Data course details here: trendytech.in/?referrer=youtube_lc5

  • @sonumahto1364
    @sonumahto1364 2 ปีที่แล้ว +6

    select Department, Employee, Salary
    from (
    select d.name as Department,e.name as Employee,e.salary,
    rank() over (partition by departmentid order by salary desc) rnk
    from Employee e
    join department d on e.departmentid=d.id ) x
    where x.rnk=1
    It is more optimised

    • @himanchalchandra6202
      @himanchalchandra6202 7 หลายเดือนก่อน

      use dense_rank over rank as it will allow more than 1 highest salary in each dept

  • @arunsundar3739
    @arunsundar3739 9 หลายเดือนก่อน +1

    'where' clause with more than one column, along with 'in' clause is a combination i am learning first time, very interesting, gaining more confidence in sql questions now :)

  • @rokibchi
    @rokibchi 10 หลายเดือนก่อน

    Finished the whole playlist. Really helpful. I've learned How to approach any SQL problem.

  • @RITURAJRANJAN-st7dv
    @RITURAJRANJAN-st7dv 9 หลายเดือนก่อน

    Thanks for the wonderful solution Sir. I have tried to solve in a different way.
    select Department,Employee,salary from (select Department,Employee,salary,dense_rank() over(partition by Department order by salary desc) as denserank from (select e.name as Employee,salary,d.name as Department from Employee e join Department d on e.departmentId = d.id) temp) temp1 where denserank=1;

  • @sathiyanr3992
    @sathiyanr3992 2 ปีที่แล้ว

    More Useful Sir. Kindly upload these kinds of problems continuously.

  • @subhajitroy5850
    @subhajitroy5850 2 ปีที่แล้ว +1

    Please bring few more problem statements showing the usage of full outer join & Cartesian product as well

  • @venkataram6460
    @venkataram6460 2 ปีที่แล้ว +1

    Please upload more videos to this playlist

  • @florincopaci6821
    @florincopaci6821 2 ปีที่แล้ว

    Thank you for all the videos! can you please please do a video about leetcode sql question 2153-number of passengers in each bus 2?Please.Thank you

  • @angelnadar6451
    @angelnadar6451 2 ปีที่แล้ว +1

    Thanks @ helpful !!!

  • @ashitosh501
    @ashitosh501 2 ปีที่แล้ว +2

    sir waiting for next session

  • @vijaybabukommuri5125
    @vijaybabukommuri5125 หลายเดือนก่อน

    # Write your MySQL query statement below
    select
    B.name as Department,
    A.name as Employee,
    A.salary as Salary
    from (
    select name,departmentId,salary,
    DENSE_RANK() OVER (PARTITION BY departmentId ORDER BY salary desc) as rn
    from Employee) as A
    left join Department B on A.departmentId=B.id
    where A.rn=1 ;
    But your approach is much better and straightforward, Unnecessarily used the DENSE_RANK and made it more complex
    SELECT B.name, A.name, A.salary FROM Employee A
    JOIN Department B ON A.departmentId=B.id
    WHERE (A.departmentId,A.salary) in
    (SELECT departmentId, MAX(salary) FROM Employee GROUP BY departmentId)

  • @adnanmulla6640
    @adnanmulla6640 ปีที่แล้ว

    Alternate way:
    select Department,Employee,Salary from (select d.name as Department, e.name as Employee, dense_rank() over
    (partition by d.name order by salary desc) as Sal, Salary from Employee e inner join Department d
    on e.departmentId=d.id)x
    where x.Sal=1

  • @faizraina6
    @faizraina6 2 ปีที่แล้ว

    why are we using department id in sub-query . why do we need to include it , can't we just use max(salary) only

    • @razeenahmed7334
      @razeenahmed7334 2 ปีที่แล้ว

      No, we can't use only max(salary) in the sub-query, because that will return only one maximum salary, but here we want to retrieve max salaries for both of the departments!

  • @lucifieramit1
    @lucifieramit1 2 ปีที่แล้ว

    select temp.name as Department,temp.employeename as Employee ,temp.salary as Salary from
    (select d.name,e.name as employeename,salary,dense_rank() over ( partition by d.name order by salary desc ) as dr from employee e join department d on e.departmentId=d.id) temp where temp.dr=1

    • @thomsondcruz5456
      @thomsondcruz5456 2 ปีที่แล้ว

      Window functions are not always cost effective

  • @karthikbs8457
    @karthikbs8457 2 ปีที่แล้ว

    Sir I saw all the previous 5 video. This problem I paused and solved the problem on my own. Thanks. But I used Partition method involving 3 select statements.
    SELECT temp1.Department,temp1.name as Employee,temp1.Salary
    FROM(
    SELECT *,
    RANK() OVER(PARTITION by temp.departmentId ORDER BY temp.Salary DESC) AS rnk
    FROM(
    SELECT e.*,d.name as "Department" FROM Employee e
    INNER JOIN Department d
    ON e.departmentId=d.id) temp
    ) temp1
    WHERE temp1.rnk=1;

    • @ShivaKumar-dj8bj
      @ShivaKumar-dj8bj 2 ปีที่แล้ว

      for this highest salary rank will work but if you want to get nth highest salary you need to use dense rank...correct me if I'm wrong

  • @dikshagupta2795
    @dikshagupta2795 2 ปีที่แล้ว

    Hello Sir,
    If we are using sql server then what will be the alternative for "WHERE (departmentId, salary)" as we can't use two columns in WHERE in sql server

    • @AnweshDash
      @AnweshDash 2 ปีที่แล้ว

      use window functions

  • @slyroy7562
    @slyroy7562 2 ปีที่แล้ว +3

    Select * from (Select employee.department, employee.name employee, salary, dense_rank() over(partition by employee.department order by salary desc) as r from employee, department where employee. Id = department. Id) where r=1;
    Will this works?

    • @Iyersukz6
      @Iyersukz6 2 ปีที่แล้ว +1

      Yes. It works

    • @dikshagupta2795
      @dikshagupta2795 2 ปีที่แล้ว +1

      There are some changes I have made and after that the query gives expected results:
      select Department, Employee, Salary from (
      Select Department.name as Department, employee.name as Employee, Salary, dense_rank() over(partition by employee.departmentId order by salary desc) as r from employee join Department on
      employee.departmentId = Department.id
      ) as r where r = 1

    • @slyroy7562
      @slyroy7562 2 ปีที่แล้ว +1

      @@dikshagupta2795 Thanks

  • @103himajapoluri6
    @103himajapoluri6 2 ปีที่แล้ว

    Can anybody help with identifying what is wrong in this query select d.name as Department,e1.name as Empolyee ,max(salary) as Salary from employee e1,department d where e1.departmentId = d.id group by d.name ;

    • @ShivaKumar-dj8bj
      @ShivaKumar-dj8bj 2 ปีที่แล้ว +1

      This will not work because here in each department for each employee there will be only one row for salary...your query gives result department, employee name and the highest salary of him, here there is only one row so basically no aggregation will happen considering there is only one row for each employee in each department. the logic is you need to first partition the data department wise then order the data by salary in descending order for each department and get the first row in each partitioned data set. you can use either Row number or dense rank to achieve this....check once.

  • @HARSHRAJ-gp6ve
    @HARSHRAJ-gp6ve หลายเดือนก่อน

    with cte as(
    select Employee.name,Employee.salary,Department.name as dept_name FROM
    Employee JOIN Department ON Employee.departmentId=Department.id
    ),cte1 as(
    select cte.*,DENSE_RANK()OVER(PARTITION BY dept_name ORDER BY salary DESC)
    as r1 FROM cte
    )
    select dept_name as Department,name as Employee,salary as Salary
    FROM cte1 where r1=1;

  • @Iyersukz6
    @Iyersukz6 2 ปีที่แล้ว

    pls solve prob 627

    • @sumitmittal07
      @sumitmittal07  2 ปีที่แล้ว +2

      Noted :) will cover that in the upcoming sessions

    • @Iyersukz6
      @Iyersukz6 2 ปีที่แล้ว

      @@sumitmittal07 thank you sir

    • @lucifieramit1
      @lucifieramit1 2 ปีที่แล้ว

      @@Iyersukz6 you need to use update with case statement in that problem

  • @Foodie_Cooking_Loverz
    @Foodie_Cooking_Loverz ปีที่แล้ว

    Looks complicated querry

  • @vishwamgupta1329
    @vishwamgupta1329 2 ปีที่แล้ว +1

    WITH Solution as
    (SELECT Employee.name as Employee, Employee.salary as Sal ,Department.name as Department, DENSE_RANK() OVER(PARTITION BY Department.name ORDER BY Employee.salary DESC) as re
    FROM Employee
    INNER JOIN Department ON Employee.departmentID=Department.id)
    SELECT Department, Employee ,Sal as Salary
    FROM Solution
    WHERE re=1;
    #This one also worked using Dense rank window function