Вот SQL-запрос для получения количества работников для каждого отдела в порядке убывания:
SELECT department, COUNT(*) AS worker_count
FROM workers
GROUP BY department
ORDER BY worker_count DESC;
В этом запросе предполагается, что у вас есть таблица с именем «работники» со столбцами для «отдела» и другой соответствующей информацией о работниках.
Вот несколько альтернативных методов достижения того же результата:
Метод 1. Использование подзапроса
SELECT department, worker_count
FROM (
SELECT department, COUNT(*) AS worker_count
FROM workers
GROUP BY department
) AS subquery
ORDER BY worker_count DESC;
Метод 2: использование общего табличного выражения (CTE)
WITH worker_counts AS (
SELECT department, COUNT(*) AS worker_count
FROM workers
GROUP BY department
)
SELECT department, worker_count
FROM worker_counts
ORDER BY worker_count DESC;
Метод 3. Использование оконной функции
SELECT department, worker_count
FROM (
SELECT department, COUNT(*) AS worker_count,
ROW_NUMBER() OVER (ORDER BY COUNT(*) DESC) AS row_num
FROM workers
GROUP BY department
) AS subquery
ORDER BY row_num;