Autor Zpráva
Casper
Profil
Dobrý den, mám tabulku takovéhle konstrukce:

p1;p2;p3
x; h; a
x; h; b
x; i; c
y; j; d
y; k; e

Potřebuji do jednoho dotazu získat ke každé hodnotě počet opakování v celém sloupci, tedy nějak takto:

x(3) > h(2) > a(1)
x(3) > h(2) > b(1)
x(3) > i(1) > c(1)
y(2) > j(1) > d(1)
y(2) > k(1) > e(1)

Přičemž v podstatě pro sloupec p3 to nepotřebuji, ten je vždy unikátní. Zvlášť ve třech dotazech získám data jaká potřebuji, v prvním jen výběr hodnot a ve zbylých dvou sečtu počet st.výskytů sloupce p1 a p2 takhle:
SELECT COUNT(id) AS soucet FROM tb GROUP BY p1

a pak totéž pro p2. Nedaří se mi však spojit to s výběrem všech hodnot v tabulce. Našel by se prosím někdo ochotný a poradil jak na to? Předem díky.
Kajman_
Profil *
select t.*, c1.pocet1, c2.pocet2, 1 pocet3
from tabulka t
left join (select t1.p1, count(*) pocet1 from tabulka t1 group by t1.p1) c1 on t.p1=c1.p1
left join (select t2.p2, count(*) pocet2 from tabulka t2 group by t2.p2) c2 on t.p2=c2.p2


Občas se používá nebo něco jako, ale vyleze to v jiné formě a je to tedy třeba zpracovat aplikací.

select p1, p2, p3, count(*) pocet
from tabulka
group by p1, p2, p3 with rollup
Casper
Profil
Mnohokrát děkuji... funguje parádně.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0