Dygnsfördelning av inloggningar

Databaser & SQL

4 svar · 351 visningar · startad av kristoffer

Medlem sedan juni 20001 257 inlägg
Trådstart#1

Jag har ett smalldatetime-fält logLogindate som anger inloggningstiden för en besökare. Jag vill visa den procentuella fördelningen av inloggningar per timme. Tex:

00 12%
01 17%
.
.
22 24%
23 14%

Om jag skriver så här:

SELECT DATEPART(hour, logLogindate), COUNT(*)
FROM dbo.login
GROUP BY DATEPART(hour, logLogindate) WITH rollup

får jag fram antal inloggningar per timme. Men jag skulle vilja att de timmar då ingen har loggat in får värdet 0. Som det är nu finns ju inte de posterna.

[Redigerat av kristoffer den 04 feb 2002]

Medlem sedan dec. 200012 464 inlägg
#2
select h,count(logLogindate) from 
(select 0 as h union select 1 union select 2
 select 3 union select 4 union select 5
select 6 union select 7 union select 8
select 9 union select 10 union select 11
select 12 union select 13 union select 14
select 15 union select 16 union select 17
select 18 union select 19 union select 20
select 21 union select 22 union select 23) as hours left join

dbo.login on hours.h = DATEPART(hour, logLogindate)
GROUP BY h WITH rollup

Alternativt så kan du skapa en tabell och lägga in 24 poster med värdet 0 till 23 och joina mot den istället.

Medlem sedan juni 20001 257 inlägg
#3

Jag får: Incorrect syntax near the keyword 'SELECT'.
(DBMS = SQL Server).

Medlem sedan dec. 200012 464 inlägg
#4

slarvig i dag

select h,count(logLogindate) from 
(select 0 as h union select 1 union select 2 union
select 3 union select 4 union select 5 union 
select 6 union select 7 union select 8 union 
select 9 union select 10 union select 11 union 
select 12 union select 13 union select  14 union 
select 15 union select 16 union select 17 union 
select 18 union select 19 union select 20 union 
select 21 union select 22 union select 23) as hours left join
dbo.login on hours.h = DATEPART(hour, logLogindate)
GROUP BY h WITH rollup

Jo, jag såg att du har SQL server, annars hade jag inte skrivit så där då det inte är portabelt.

Medlem sedan juni 20001 257 inlägg
#5

Fungerar. Tackar.

259 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a
126 ms — deklarationer (db)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)
121 ms — ändringar (db)