Jak získat počet count(něco) pro dvě podmínky WHERE?
8 příspěvků
Archiv diskusního fóra
Fórum je uzavřené a slouží pouze ke čtení. Některé informace mohou být zastaralé.
-
SOS, marně si lámu hlavu nad MySQL dotazem, který by z tabulky úkolů, kde se vyskytují sloupce "login" a "stav", zobrazil počty stavů k jednotlivým loginům. Konkrétně: login / stav VYŘÍZENO / stav NEZÁJEM Petr / 5 / 12 Jan / 8 / 16 zatím se mi povedlo jen SELECT login, count(stav) AS vyrizeno FROM tabulka WHERE (stav="vyrizeno") GROUP BY login totéž mohu udělat i pro "nezajem", ale jak to spárovat, abych dostal jen jednu tabulku se třemi sloupci (a mohl potom počítat třeba % vyřízených), to už z těch kombinací začínám blbnout:-) Předem mooc dík za nějaký nápad. Dali
-
mysql> SELECT login,stav, count(stav) FROM ukoly GROUP BY login, stav; +--------+------+-------------+ | login | stav | count(stav) | +--------+------+-------------+ | Franta | 0 | 2 | | Franta | 1 | 3 | | Pepa | 0 | 2 | | Pepa | 1 | 4 | +--------+------+-------------+ Stačilo by to takhle?
-
K tomu jsem došel, ale jak udělat, aby tam byl Franta a Pepa jen jednou. Mít řádky jen po jménech (ne pro každý stav) a jednotlivé stavy mít jako sloupečky ve kterých budou jejich počty, uf;-). Zatím se mi to povedlo jen jako kontingenční tabulka v Excelu se zdrojem dat v MySQL... Díky
-
A co toto? SELECT login, count( stav ) AS celkem, count( stav ) - sum( stav ) AS stav0, sum( stav ) AS stav1 FROM ukoly GROUP BY login
-
Joo, asi dobrý směr, zrovna jsem si říkal, zda by se to dalo nějak dopočítat z celku v PHP. V SELECTu ale asi nemohu do závorek místo "stav" dát konkrétní stav např. "vyrizeno" nebo nějakou podmínku. WHERE tam také není, takže mám sice výstupní sloupečky login/celkem/stav0/stav1, ale počet je jen "celkem", stav0=celkem, stav1=0. Šlo by to nějakým složeným dotazem?
-
Dej se kus tvé tabulky "tabulka" a taky ukázku co bys chtěl dostat. Možností je více: SQL dotaz, temporary tabulka, aplikační výpočet v PHP.
-
MÁM: ZMENIL / STAV Franta / vyrizeno Franta / vyrizeno Franta / nezajem Pavel / nezajem Pavel / vyrizeno RÁD BYCH: ZMENIL / POCET VYRIZENO / POCET NEZAJEM Franta / 2 / 1 Pavel / 1 / 1 Díky moc.
-
No právě, když typ sloupce Stav změnís na INT (třeba i tinyint) a data na 0 a 1, bude ti fungovat můj SQL dotaz. ZMENIL / STAV Franta / 1 Franta / 1 Franta / 0 Pavel / 0 Pavel / 1