Autor | Zpráva | ||
---|---|---|---|
Sylar Profil |
Zdravím,
mám tabulku se záznamy typu enum a potřeboval bych vytáhnout DISTINCT záznamy podle dnů (group by day(date)) a tyto sečíst za týden (group by week(date)). Sestavil jsem tento dotaz SELECT COUNT(DISTINCT zaznam) FROM tabulka WHERE date > (NOW() - interval 180 day) GROUP BY DAY(datetime) který mi správně vrátí všechny DISTINCT záznamy rozdělené do dnů, ale když tento dotaz volám jako subquery, tak mi to vyhodí chybu, že je více než jeden vrácený výsledek. Potřeboval bych tam tedy ještě nějak dostat SUM(), ale s tím už si nevím rady. Lze to nacpat do jednoho dotazu?
Celý dotaz pak vypadá nějak takto: SELECT id, (SELECT COUNT(DISTINCT zaznam) FROM tabulka WHERE datetime > (NOW() - interval 180 day) GROUP BY DAY(datetime)) AS pocet FROM tabulka WHERE page = "stranka" AND datetime > (NOW() - interval 180 day) GROUP BY date ORDER BY date |
||
Keeehi Profil |
#2 · Zasláno: 15. 12. 2015, 02:17:41
Sylar:
To nějak nedává logický smysl. Co má být výstupem, čeho se snažíš dosáhnout? |
||
Sylar Profil |
#3 · Zasláno: 15. 12. 2015, 02:46:00
Keeehi:
Zobrazuji data po týdnu - součet DISTINCT záznamů za celý týden. Týden lze ale rozkliknout a tam se pak zobrazují DISTINCT záznamy za jednotlivé dny. Když ale vyberu DISTINCT záznamy za celý týden a záznam je za každý den, vybere se mi pouze 1x (za týden), zatímco v přehledu dle dnů se mi vybere 7x (za každý den) - čísla pak logicky nesedí, čehož se snažím dosáhnout. |
||
Kajman Profil |
Takže něco jako?
SELECT DATE_FORMAT(datum, '%x-%v') tyden, SUM(pocet) soucet from (SELECT DATE(datetime) datum, COUNT(DISTINCT zaznam) pocet FROM tabulka WHERE datetime > (NOW() - interval 180 day) GROUP BY DATE(datetime)) x GROUP BY DATE_FORMAT(datum, '%x-%v') ORDER BY 1 |
||
Sylar Profil |
Kajman:
tohle vypadá, že by to mělo dělat to co potřebuji, ale háže to chybu "Incorrect parameter count in the call to native function 'DATE_FORMAT'". Edit: v tom subselect by se měl zřejmě ještě vybírat datetime a pak jej vložit jako první parametr té fce DATE_FORMAT() v GROUP BY na šestém řádku. Pak to funguje a vypadá to, že to i správně počítá, jak potřebuji. Díky moc Kajman |
||
Kajman Profil |
Sylar:
Vypisovat datetime v poddotaze nedává smysl, když se to groupuje podle date(datetime) a v některých konfiguracích mysql by to skončilo chybou. V date_format v group by chybí první parametr datum, jako v selectu, upraveno. |
||
Časová prodleva: 8 let
|
0