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
Sylar:
To nějak nedává logický smysl. Co má být výstupem, čeho se snažíš dosáhnout?
Sylar
Profil
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.

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