webForumDet fria alternativet

statistiktabell group by / order by

Databaser & SQL

4 svar · 271 visningar · startad av Dies_Irae

Medlem sedan aug. 2001145 inlägg
Frågan#1

Hej,

Har en statistiktabel som lägger till en nytt inlägg för varje klick på en produkt

Tabellen ser ut ungefär såhär (Har inte koderna här så kan tyvärr inte visa exakt)

added(datetime), product_id(int)

product_id är alltså id på själva produkten man klickar på så tabellen kan se ut såhär:

added		product_id
feb		1
feb		1
feb		4
jan		4
jan		3
jan		3

Alltså 2 klick på varje produkt under jan/feb.

Nu vill jag dra ut en lista som grupperas efter tex månader och produktid

SELECT 
	month(added), product_id
	count(*) as hits
FROM 
	stats
GROUP BY month(added), product_id
ORDER BY added DESC, hits DESC

Hur löser man detta egentligen? Det över (Om jag nu skrev rätt) sorterar endast efter added

Listan blir då typ typ:

added		product_id	hits
feb		1		2
feb		4		1
jan		4		1
jan		3		2

Den Sorteras alltså rätt för datumet, men sen att få hits:en i order per månad funkar inte.

Ursäkta att jag är usel på att förklara, hoppas någon fattar annars får ni hojta till så får jag göra ett nytt försök

Medlem sedan dec. 200012 464 inlägg
#2
...
order by month(added) desc ...

Om du har group by så kan du inte sortera på något som du inte gör select på.

Medlem sedan aug. 2001145 inlägg
#3

Tack, klantigt.. Lite konstigt att den endå sorterade rätt på added men inte hits endå väll? hits va ju i select men inte added

Medlem sedan dec. 200012 464 inlägg
#4

Din sqlsats borde inte godkännas av kompilatorn.

Sorteringen sker på hela datumet men du vet inte vilket datum.

added product_id
2007-02-22 1
2007-02-22 1
2007-02-23 4
2007-01-12 4
2007-01-11 3
2007-01-13 3

Om du har ovanstående, vilket datum för produkt 3 skall användas när man sorterar?

Medlem sedan aug. 2001145 inlägg
#5

Ja de e sant, fast fick aldrig nått felmeddelande, listan kom ju tom fram datumsorterad så antar att de bara va en tillfällighet :)

409 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
117 ms — deklarationer (db)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)
271 ms — ändringar (db)