Проблема SQL-запроса: не удается получить желаемый вывод - PullRequest
1 голос
/ 13 октября 2011

Данная реляционная схема:

Emp (имя, улица, город)

Works_for (e_name, company_name, salary)

Компания (название компании, город)

Управляет (e_name, manager_name)

Запрос: найдите компанию с максимальным количеством сотрудников.

Моя попытка:

SELECT company_name, max(count(e_name))
FROM Works_for
GROUP BY company_name

^ Это выдает ошибку: ни одна функция группа-группа. Каков правильный запрос для этого?

Спасибо за помощь!

Ответы [ 3 ]

6 голосов
/ 13 октября 2011

Так как вам нужен стол * максимум 1002 *, который вы можете использовать ORDER BY ... DESC LIMIT 1:

SELECT company_name, COUNT(e_name) AS cnt
FROM Works_for
GROUP BY company_name
ORDER BY cnt DESC
LIMIT 1

Обновление

Без использования LIMIT этоне так приятно:

SELECT MAX(company_name)
FROM
(
    SELECT company_name AS company_name
    FROM Works_for
    GROUP BY company_name
    HAVING COUNT(*) = (
        SELECT MAX(cnt) FROM
        (
            SELECT COUNT(e_name) AS cnt
            FROM Works_for
            GROUP BY company_name
        ) T1
    )
) T2
3 голосов
/ 13 октября 2011

Попробуйте:

SELECT company_name, count(e_name) count 
FROM Works_for 
GROUP BY company_name 
ORDER BY count desc

Тогда просто возьмите верхнюю

1 голос
/ 13 октября 2011

Чтобы попытаться избежать лимита, вы можете использовать предложение:

SELECT company_name, count(e_name)
FROM Works_for
GROUP BY company_name
HAVING count(e_name) = (
  SELECT max( count(e_name) )
  FROM Works_for
  GROUP BY company_name );

Но на самом деле ограничение - это более простой вариант!

...