Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> funkcja agregujaca
ksiadz
post 9.06.2005, 16:38:54
Post #1





Grupa: Zarejestrowani
Postów: 39
Pomógł: 0
Dołączył: 24.11.2003

Ostrzeżenie: (0%)
-----


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?


--------------------
If you can't find a program that does what you want it to do, then write your own.
Go to the top of the page
+Quote Post
asterix
post 9.06.2005, 17:10:24
Post #2





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 14.01.2003

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
nospor
post 9.06.2005, 17:25:20
Post #3





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




@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


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
ksiadz
post 9.06.2005, 17:57:20
Post #4





Grupa: Zarejestrowani
Postów: 39
Pomógł: 0
Dołączył: 24.11.2003

Ostrzeżenie: (0%)
-----


@nospor big THX smile.gif to bylo ostatnie zapytanie z ktorym nie moglem sobie poradzic


--------------------
If you can't find a program that does what you want it to do, then write your own.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 15.06.2025 - 04:45