Autor | Zpráva | ||
---|---|---|---|
FrantPoker Profil * |
#1 · Zasláno: 13. 8. 2013, 21:45:09
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 |
#2 · Zasláno: 13. 8. 2013, 21:52:42
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 |
#3 · Zasláno: 13. 8. 2013, 22:15:01
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 |
||
Časová prodleva: 11 let
|
0