I have made a query in Oracle HR schema to see the following information:
- The city where the department is located
- The total number of employees in the department
However, the query cannot be executed correctly and said this is “not a GROUP BY expression”.
Does anyone knows what’s the problem is? Thanks in advance.
SELECT department_name, city, COUNT(employees.department_id)
FROM departments
JOIN employees on (departments.department_id=employees.department_id)
JOIN locations USING (location_id)
GROUP BY department_name;
Advertisement
Answer
The problem is you have both aggregated and non-aggregated column (in your case city in the select list.
As I don’t know the structure of location table and considering a department have only one location defined you can use max(city),
SELECT department_name, max(city) city, COUNT(employees.department_id) no_of_employees
FROM departments
JOIN employees on (departments.department_id=employees.department_id)
JOIN locations USING (location_id)
GROUP BY department_name;