Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [mysql] problem ze średnią AVG
MitS
post 15.07.2009, 09:54:55
Post #1





Grupa: Zarejestrowani
Postów: 262
Pomógł: 5
Dołączył: 8.02.2005
Skąd: Olsztyn / Zatorze

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


Witam serdecznie mam sobie taką tabelkę:

  1. CREATE TABLE companies(
  2. idCompany INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
  3. person INT(11) UNSIGNED NOT NULL,
  4. umowa ENUM('z', 'p') NOT NULL,
  5.  
  6. PRIMARY KEY(person),
  7. INDEX companiesFK1(person),
  8. FOREIGN KEY(person)
  9. REFERENCES persons(person) ON DELETE CASCADE ON UPDATE CASCADE
  10. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;


i nie wiem jakim zapytaniem mógłbym wyliczyć średnią idCompany gdzie umowa = 'z' oraz gdzie umowa = 'p'
Próbowałem tak:

  1. SELECT AVG(COUNT(*)) AS srednia FROM companies WHERE umowa = 'z';


ale coś nie wychodzi wywala błąd:
  1. #1111 - Invalid use of group function


macie pomysł jak to można wykonać?

Ten post edytował MitS 15.07.2009, 10:15:01
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Weirdo
post 20.07.2009, 20:35:01
Post #2





Grupa: Zarejestrowani
Postów: 16
Pomógł: 2
Dołączył: 30.05.2009

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


Cytat
SELECT AVG(COUNT(*)) AS srednia FROM companies WHERE umowa = 'z';

Cytat
wynikiem powinna być średnia wpisów posiadających literkę 'z'



Jakim cudem? Pomyśl najpierw, zanim coś napiszesz.
Cytat
SELECT COUNT(*) AS srednia FROM companies WHERE umowa = 'z';


To Ci zwraca jeden wiersz - liczbę osób z umową "z". Skoro masz jedną liczbę, jakim cudem chcesz z tego robić średnią?
Jeżeli chcesz pogrupować np. wg firmy i uzyskać średnią na firmę, no to dodaj GROUP BY.

Na początek więcej myśleć, przeczytać choćby podstawowy kurs SQLa.

EOT.
Go to the top of the page
+Quote Post

Posty w temacie


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: 14.08.2025 - 15:55