我有這些表:SQL - 選擇名稱和其員工的最大數量各部門的地址
部門
DEPARTMENT_ID DEPARTMENT_NAME ADDRESS
------------- -------------------- --------------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 IT DALLAS
50 EXECUTIVE NEW YORK
60 MARKETING CHICAGO
員工
Employee_ID employee_name job manager_ID hire_date salary commission department_ID
------------------------------------------------------------------------------------------------------------
7839 KING PRESIDENT 20-NOV-01 5000 50
7596 JOST VICE PRESIDENT 7839 04-MAY-01 4500 50
7603 CLARK VICE PRESIDENT 7839 12-JUN-01 4000 50
7566 JONES PUBLIC ACCOUNTANT 7596 05-APR-01 3000 10
7886 STEEL PUBLIC ACCOUNTANT 7566 08-MAR-03 2500 10
7610 WILSON ANALYST 7596 03-DEC-01 3000 20
7999 WOLFE ANALYST 7610 15-FEB-02 2500 20
7944 LEE ANALYST 7610 04-SEP-06 2400 20
7900 FISHER SALESMAN 7603 06-DEC-01 3000 500 30
7921 JACKSON SALESMAN 7900 25-FEB-05 2500 400 30
7952 LANCASTER SALESMAN 7900 06-DEC-06 2000 150 30
7910 SMITH DATABASE ADMINISTRATOR 7596 20-DEC-01 2900 40
7788 SCOTT PROGRAMMER 7910 15-JAN-03 2500 40
7876 ADAMS PROGRAMMER 7910 15-JAN-03 2000 40
7934 MILLER PROGRAMMER 7876 25-JAN-02 1000 40
8000 BREWSTER TBA 22-AUG-13 2500
我需要顯示除達拉斯外的名稱和地址,擁有最多的員工人數。
我寫了這個:
SELECT department_name, address
FROM department
WHERE department_id IN
(SELECT MAX(department_id)
FROM department
WHERE UPPER(address) != 'DALLAS')
ORDER BY department_name;
但我只得到一個行
DEPARTMENT_NAME ADDRESS
-------------------- --------------------
MARKETING CHICAGO
我在做什麼錯?
首先,爲什麼你不能獲得單個記錄?你在期待什麼?其次,你爲什麼要做'MAX(department_id)'?你認爲那是什麼? – sstan
所有你將會得到的是一行,因爲你說的部門ID匹配最大部門ID。所以,最高價值的部門ID。 您需要使用「有數」的組。 – CargoMeister
我試過這個,但仍然無法讓它工作。我試過 GROUP BY department_id HAVING count(*)=(SELECT MAX(count(*)) FROM employee GROUP BY department_id) – user5352234