🖥 Задачи с собеседования



Найти идентификатор с максимальным значением



depname | empno | salary |

-----------+-------+--------+

develop | 11 | 5200 |

develop | 7 | 4200 |

develop | 9 | 4500 |

develop | 8 | 6000 |

develop | 10 | 5200 |

personnel | 5 | 3500 |

personnel | 2 | 3900 |

sales | 3 | 4800 |

sales | 1 | 5000 |

sales | 4 | 4800 |






Задача: написать запрос, чтобы получить empno с самой высокой зарплатой. Убедитесь, что ваше решение обрабатывает случаи одинаковых зарплатами!



Решение:



WITH max_salary AS (

SELECT

MAX(salary) max_salary

FROM

salaries

)

SELECT

s.empno

FROM

salaries s

JOIN

max_salary ms ON s.salary = ms.max_salary




Альтернативное решение с использованием RANK():



WITH sal_rank AS

(SELECT

empno,

RANK() OVER(ORDER BY salary DESC) rnk

FROM

salaries)

SELECT

empno

FROM

sal_rank

WHERE

rnk = 1;





@sqlhub