Я новичок в SQL.
Я проверил "другое решение SQL СОЕДИНЕНИЕ двух таблиц с AVG ", опубликованных в StackOverflow. И я не понимаю смысла этой строки в этой статье: AVG(score.score * 1.0)
Кроме того, альтернативное решение, приведенное ниже, вообще не работает:
SELECT songs.id, songs.song, songs.artist,
(SELECT AVG(Score) FROM score WHERE score.id = songs.id) AS AvgScore)
FROM songs
Здесь мои таблицы:
[employees]
Dep ID | SALARY
1 | 500
2 | 200
1 | 300
2 | 1000
2 | 400
3 | 200
3 | 300
[departments]
Dept ID Dep| Dept Name
1 | Volcano
2 | ShootingStar
3 | Tsunami
В конце концов, я хочу создать список выглядит так:
Dept Name | Average Salary
Volcano | $$$
ShootingStar| $$
Tsunami | $$$$
Я пробовал разные способы и охоты подсказки в стеке потока для подзапросов / функций внутреннего соединения, но все еще не могут его получить.
Основано на решении, указанном в предыдущей ссылке SQL СОЕДИНИТЬ две таблицы с AVG , этот код работает :
-- mapping DEPT ID with NAME + average salary by DEPT --
select EMPLOYEES.DEP_ID, DEPARTMENTS.DEP_NAME, AVG(EMPLOYEES.SALARY) as AVG_S
from EMPLOYEES
LEFT JOIN DEPARTMENTS
ON EMPLOYEES.DEP_ID = DEPARTMENTS.DEPT_ID_DEP
group by DEP_ID, DEP_NAME;
Однако я хочу понять причину, ПОЧЕМУ мой оригинальный не работает?
select E.DEP_ID, D.DEP_NAME, (select AVG(SALARY) from EMPLOYEES group by DEP_ID) as AVG_S
from EMPLOYEES E, DEPARTMENTS D
where E.DEP_ID = D.DEPT_ID_DEP
group by DEP_ID, DEP_NAME;
Пожалуйста, помогите!
Большое спасибо.