Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Problem z GROUP BY i COUNT()
derluk
post
Post #1





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 26.01.2007

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


Witam!

Mam problem takiej oto tresci, musze napisac zdanie sql zliczajace ilosc krotek w kazdej podgrupie. Czy ktos moglby mi pomoc w tym? Nakierowac czy cos w tym stylu...

select A, B, C
from T1
group by A, B, C

np w takim przykladzie musze wyswietlic dodatkowo licznosc kazdego ze zbiorow - A, B, C
Bede wdzieczny za kazda wskazowke.

Pozdrowka
Go to the top of the page
+Quote Post
spryciula
post
Post #2





Grupa: Zarejestrowani
Postów: 73
Pomógł: 0
Dołączył: 9.12.2006

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


podaj przykład tabeli i danych tam zawartych

może tak
  1. SELECT podgrupa, count(korekty)
  2. FROM t1 GROUP
  3. BY podgrupa


Ten post edytował spryciula 26.01.2007, 23:00:56
Go to the top of the page
+Quote Post
derluk
post
Post #3





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 26.01.2007

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


tak jak podales dzialaloby dobrze dla 1 podgrupy, a chodzi o to aby zliczalo wszystkie podgrupy dane po select'cie.

Table ma taka postac:

create table Zawodnicy
(
NrZawodnika int,
Imie varchar(15) not null,
Nazwisko varchar(25) not null,
Plec varchar(1) not null,
check (upper(Plec) = 'M' or upper(Plec) = 'K'),
RokUrodzenia int not null,
NrKategorii int not null,
NrKlubu int not null,
Primary Key (NrZawodnika),
Foreign Key NrKlubu
References Kluby(NrKlubu),
Foreign Key NrKategorii
References Kategorie(NrKategorii)

);
dane zawarte w tabeli sa mniej istotne, ale np chcialbym dajac takie zapytanie:

select NrKategorii, count(NrKategorii), NrKlubu, count(NrKlubu)
from Zawodnicy
group by NrKategorii, NrKlubu

(Te zapytanie jest niepoprawne)

otrzymac ilosc krotek zawierajacych ten sam numer kategorii oraz liczbe krotek zawierajacych ten sam numer klubu.
Rozpisujac to na dwa zapytania jest to trywialne caly problem polega na tym jak zrobic to na jednym zdaniu... (???) : )
Go to the top of the page
+Quote Post
spryciula
post
Post #4





Grupa: Zarejestrowani
Postów: 73
Pomógł: 0
Dołączył: 9.12.2006

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


zgaduje, czy o to ci chodziło, chcesz w jednym zapytaniu wywalić ile jest klubów i ile kategorii


więc może o to ci chodzi

  1. SELECT xxx.nrklubu, xxx.licznik_klubu, z.nrkategorii, count(z.nrkategorii) licznik_kategorii
  2. FROM (SELECT nrklubu, count(nrklubu) licznik_klubu
  3. FROM zawodnicy GROUP BY nrklubu)xxx INNER JOIN zawodnicy z
  4. WHERE xxx.nrklubu = z.nrklubu
  5. GROUP BY nrkategorii


Ten post edytował spryciula 27.01.2007, 01:29:56
Go to the top of the page
+Quote Post
derluk
post
Post #5





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 26.01.2007

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


Niestety nie dziala to tak jak powinno. Dobrze zgadles ze chce podac w jednym zapytaniu liczbe klubow i kategorii.
Musialem Twoje zapytanie troszke zmodyfikowac aby w ogole sie ruszylo, do nastepujacej formy:
  1. SELECT xxx.nrklubu, xxx.licznik_klubu, z.nrkategorii, count(z.nrkategorii) licznik_kategorii
  2. FROM (SELECT nrklubu, count(nrklubu) licznik_klubu
  3. FROM zawodnicy GROUP BY nrklubu) xxx INNER JOIN zawodnicy z ON xxx.nrklubu = z.nrklubu
  4. GROUP BY nrkategorii, xxx.nrklubu, licznik_klubu
  5. ORDER BY 1

a wynik otrzymany byl nastepujacy:



Jak widac wyswietla wiele razy nrklubu = 1 , chodzi o to by pokazal ten numer raz i obok jego licznosc, to samo jest z nrkategorii, probowalem... Glowa mała : )
Go to the top of the page
+Quote Post
spryciula
post
Post #6





Grupa: Zarejestrowani
Postów: 73
Pomógł: 0
Dołączył: 9.12.2006

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


wyświetla ci kilka razy ten sam numer klubu, ponieważ masz kilka kategorii, przypisanych do tego samego klubu, inaczej się nie da, zrobić zapytaniem sql'owym,
tak jak ty chcesz to zrobić, możesz tylko zrobić w pl/sql'u, robisz dwa kursory, jednym wyciągasz numer klubu i jego liczebność a drugim kursorem, po numerze klubu wyciągasz ilość kategorii i ich liczebność, a potem w programie(po begin) wyświetlasz, coś takiego


zobacz obrazek
i tak dalej

Ten post edytował spryciula 27.01.2007, 18:46:46
Go to the top of the page
+Quote Post
derluk
post
Post #7





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 26.01.2007

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


Nie wiem, nie wiem smile.gif bede probowac stworzyc jeszcze jakies kombinacje. Niemniej jednak dziekuje bardzo za poswiecony czas i pomoc.
Pozdrawiam
Go to the top of the page
+Quote Post
nestor100
post
Post #8





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

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


Może taki myk pomoże:

Select A||' - '||Count(*) kod_ilosc from T1 group by A
UNION
Select B||' - '||Count(*) kod_ilosc from T1 group by B
UNION
Select C||' - '||Count(*) kod_ilosc from T1 group by C



Bogdan Kaczmarek
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 Aktualny czas: 19.08.2025 - 03:02