Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: funkcja agregujaca
Forum PHP.pl > Forum > Bazy danych > MySQL
ksiadz
mam problem z zapytaniem, celem wykonania zapytania ma byc: pobranie nazwy miasta, sredniej pensji w miastach i srednia za godzine pracy, wynik nie moze zawierac miasta GREENWOOD oraz miast gdzie srednia pensja jest mniejsza niz 2000 i tu sie zaczyna problem sad.gif jedyne co mi sie udalo wyskrobac to takie zapytanie:
  1. SELECT p.city, avg(e.pay_rate), avg(e.salary) AS srednia_pensja
  2. FROM employee_tbl p, employee_pay_tbl e
  3. WHERE p.emp_id=e.emp_id AND city<>'GREENWOOD' AND srednia_pensja > 2000
  4. GROUP BY p.city
  5. ORDER BY srednia_pensja

niestety to wywala mi blad przez kod:
  1. AND srednia_pensja > 2000

niestety nie wiem jak sobie juz z tym poradzic
struktura tabel to:
  1. CREATE TABLE employee_tbl
  2. (
  3. emp_id char(9) NOT NULL,
  4. last_name char(15) NOT NULL,
  5. first_name char(15) NOT NULL,
  6. middle_name char(15),
  7. addres char(30) NOT NULL,
  8. city char(15) NOT NULL,
  9. state char(2) NOT NULL,
  10. zip char(6) NOT NULL,
  11. phone char(10),
  12. pager char(10),
  13. constraint PK_employee_tbl PRIMARY KEY (emp_id)
  14. );
  15. CREATE TABLE employee_pay_tbl
  16. (
  17. emp_id char(9) NOT NULL,
  18. position char(15) NOT NULL,
  19. date_hire date,
  20. pay_rate numeric,
  21. date_last_raise date,
  22. salary numeric,
  23. bonus numeric,
  24. constraint PK_employee_pay_tbl PRIMARY KEY (emp_id)
  25. );

moze ktos szybko pomoc?
asterix
no i wcale sie nie dziwie ze wywala blad bo nigdzie w tablach nie masz takiego pola jak 'srednia_pensja' ? pobiez inne pole z bazy lub jakos obliczaj sobie wczesniej srednia_pensje

Pozdrawiam
nospor
@asterix ty czytaj dokaldnie posty. kolega ma srednia_pensja jako alias.

Musisz warunen na funckje agregującą dać w having a nie w where, czyli coś takiego
  1. SELECT p.city, avg(e.pay_rate), avg(e.salary) AS srednia_pensja
  2. FROM employee_tbl p, employee_pay_tbl e
  3. WHERE p.emp_id=e.emp_id AND city<>'GREENWOOD'
  4. GROUP BY p.city
  5. HAVING srednia_pensja > 2000
  6. ORDER BY srednia_pensja
ksiadz
@nospor big THX smile.gif to bylo ostatnie zapytanie z ktorym nie moglem sobie poradzic
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.