Професионална програма
Loading...
+ Нов въпрос
Spaskich avatar Spaskich 36 Точки

[Data Aggregation] Problem 18 - Salary Challenge

Здравейте, колеги!

Мъча се с последната задача от Data Aggregation упражнението. Ето това ми е кодът:

SELECT e.first_name, e.last_name, e.department_id
FROM employees AS e
WHERE e.salary > (
	SELECT AVG(inside.salary)
	FROM employees AS inside
	WHERE inside.department_id = e.department_id
	GROUP BY inside.department_id
)
ORDER BY e.department_id
LIMIT 10;

Ако някой може да ме насочи къде ми е грешката, ще съм му много благодарен! :)

0
Module: Java DB
Bobosam avatar Bobosam 185 Точки
Best Answer

Това е моята заявка:

select em.first_name, em.last_name, em.department_id
from employees as em
join
(select e.department_id, avg(e.salary) as avg_salary
from employees as e
group by e.department_id) as avg_salaries
on em.department_id = avg_salaries.department_id
where em.salary > avg_salaries.avg_salary
order by em.department_id
limit 10

И твоята и моята заявка в Хейди водят до еднакъв отговор. В джъджа моята минава, а твоята не. Единствено някой от преподавателите с достъп могат да видят какво не му харесва на джъджа и евентуално да се оправи за изпита.

2
kaloyannikov avatar kaloyannikov 531 Точки

Tрябва да ги агрегираш по някакъв начин , вържи същата таблица със себе си и ги вържи по department_id и след това ги групирай.

Аз я направих така -> http://pastebin.com/AhdXz4hv

Вероятно има и друг начин

1
06/10/2016 18:26:10
dgp_82 avatar dgp_82 19 Точки

За SQL Това минава в Judge:

SELECT TOP 10  e.FirstName, e.LastName, e.DepartmentID
FROM Employees AS e
JOIN
(SELECT e.DepartmentID, avg(e.Salary) AS avgs
FROM Employees AS e
GROUP BY e.DepartmentID) AS avgSalaries
on e.DepartmentID = avgSalaries.DepartmentID
where e.Salary > avgSalaries.avgs
order by e.DepartmentID

0