webForumDet fria alternativet

Dygnsfördelning av inloggningar

Databaser & SQL

4 svar · 317 visningar · startad av kristoffer

Medlem sedan juni 20001 257 inlägg
Frågan#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.

------------------
essentitia preter non sans multiplicandum

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.

------------------
essentitia preter non sans multiplicandum

Medlem sedan juni 20001 257 inlägg
#5

Fungerar. Tackar.

269 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
129 ms — deklarationer (db)
0 ms — hämta statistik (cache)
138 ms — hämta tråd, inlägg och bilagor (db)
128 ms — ändringar (db)