Autor Zpráva
FrantPoker
Profil *
Zdravím,
potřeboval bych poradit, jak v SQL vyzrát na následující:
Mám tabulka na hodnocení k článkům, obsahuje sloupec "rate_rtype" ve kterém jsou 2 hodnoty - p nebo m.
p = Plus
m = Mínus
Takže celkové hodnocení je p-m.
Tabulka taky obsahuje sloupec "rate_pageid" - obsahuje id článku
Potřeboval bych SQL dotaz, pomocí kterého vypíšu články od nejlépe hodnoceného - takže něco takového:
U každého rate_pageid se stejnou hodnotou (např. 3) se spočítá počet řádků, které obsahují v sloupci "rate_rtype" p, poté kolik jich obsahuje m. Počet výskytu p - počet výskytu m a podle výsledku seřadit výpis.
Alphard
Profil
Tento algoritmus bude zvýhodňovat hodně hodnocené články i v případech, kde kladné hodnocení jen mírně převažuje nad mínusovým (absolutní počet p - m bude pořád velký). Je to záměr?
Pokud ano, změnil bych hodnoty sloupce, místo p dát 1, místo m dát -1 a pak sum(rating), group by page.
Kajman
Profil
I s těmi divnými hodnotami dotazy půjdou sestavit, např. tento, ale není ladný a těžko odhadnout jeho rychlost.
SELECT rate_pageid,
       Sum(hodnoceni) soucet
FROM   (SELECT rate_pageid,
               Count(*) hodnoceni
        FROM   tabulka
        WHERE  rate_rtype = 'p'
        GROUP  BY rate_pageid
        UNION ALL
        SELECT rate_pageid,
               -Count(*) hodnoceni
        FROM   tabulka
        WHERE  rate_rtype = 'm'
        GROUP  BY rate_pageid) tmp
GROUP  BY rate_pageid
ORDER  BY soucet DESC

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