Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[SQL] Sortering gaat niet goed

Pagina: 1
Acties:

  • SierdW
  • Registratie: April 2004
  • Laatst online: 23-09 12:48
Ik probeer data te verkrijgen om het aantal SPAM-berichten wat op gateway niveau is geweigerd in kaart te brengen, totaal van alle berichten per uur van de dag. Ik houd een tabel bij waarin alle berichten worden opgeslagen inclusief datum en tijd. Nou heb ik de volgende query gemaakt die in principe de juiste data verkrijgt, alleen werkt de sortering niet. Ik heb echter geen idee waarom die sortering niet goed werkt:
SQL:
1
2
3
4
5
6
7
SELECT     TOP (100) PERCENT Uur, SUM(Aantal) AS TotaalSpam
FROM         (SELECT     TOP (100) PERCENT DATENAME(hour, Time) AS Uur, COUNT([Event-ID]) AS Aantal
                       FROM          dbo.TrackingLogRaw
                       WHERE      ([Event-ID] NOT LIKE '1028')
                       GROUP BY Time) AS SpamBerichten
GROUP BY Uur
ORDER BY Uur


De output van de query is hetvolgende, echter ik zou de uren graag op oplopende volgorde hebben, wat doe ik fout:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
0   320
1   305
10  367
11  421
12  427
13  396
14  439
15  468
16  476
17  480
18  449
19  467
2   295
20  465
21  448
22  420
23  419
3   306
4   289
5   279
6   307
7   313
8   320
9   321


De grafiek geeft op deze manier ook de uren niet chronologisch weer...

Misschien maak ik wel een domme fout, in dat geval hoor ik het graag :)

[ Voor 5% gewijzigd door SierdW op 12-04-2008 11:53 . Reden: Link naar grafiek erbij ]


  • Gromba
  • Registratie: Mei 2003
  • Laatst online: 03-11 22:49

Gromba

Tijdreiziger @ 1sec/sec

Wat voor type is de uur-kolom?

Gromba.nl


  • SierdW
  • Registratie: April 2004
  • Laatst online: 23-09 12:48
Gromba schreef op zaterdag 12 april 2008 @ 11:55:
Wat voor type is de uur-kolom?
De kolom Time is DateTime, uur wordt zoals in de query is te zien uit Time gehaald.

  • Paul
  • Registratie: September 2000
  • Nu online
Krijg je met "select top (100) percent" niet gewoon alles? Dus dan staat er select uur, bla...

Verder lijkt er op de string-waarde gesorteerd te worden dus moet je zorgen dat SQL denkt dat het integers zijn :)

"Your life is yours alone. Rise up and live it." - Richard Rahl
Rhàshan - Aditu Sunlock


  • SierdW
  • Registratie: April 2004
  • Laatst online: 23-09 12:48
Paul Nieuwkamp bedankt! Ik laat nu Uur omvormen naar int met CONVERT(int, Uur) AS NieuwUur:
SQL:
1
2
3
4
5
6
7
SELECT     TOP (100) PERCENT CONVERT(int, Uur) AS NieuwUur, SUM(Aantal) AS TotaalSpam
FROM         (SELECT     DATENAME(hour, Time) AS Uur, COUNT([Event-ID]) AS Aantal
                       FROM          dbo.TrackingLogRaw
                       WHERE      ([Event-ID] NOT LIKE '1028')
                       GROUP BY Time) AS SpamBerichten
GROUP BY Uur
ORDER BY NieuwUur


Die tweede Top(100) percent kan er inderdaad uit, SQL zet die eerste er automatisch in...

[ Voor 7% gewijzigd door SierdW op 12-04-2008 16:52 ]