» »

[MSSQL] Query

[MSSQL] Query

mmaestro ::

Imam sledeč problem, ki ne vem kako ga rešiti. Imam podatke v neki tameli, kjer so notri stolpci: ID, value, dtime. Zadeva je taka, da se v tabelo shranjujejo neke vrednosti recimo vsakih 5s, zdaj pa bi jaz rad npr od datuma npr. 1.12.2006 do 5.12.2006, ven rad dobil podatke v nekak tako:

Primer:
dtime value
1.12.2006 12:15:00 10
1.12.2006 12:16:00 11
1.12.2006 12:17:00 9
1.12.2006 12:18:00 12
1.12.2006 12:19:00 8

1.12.2006 12:21:00 20
1.12.2006 12:22:00 21
1.12.2006 12:23:00 19
1.12.2006 12:24:00 22
1.12.2006 12:25:00 18

Se pravi rad bi dobil rezultat nekaj takega:
1.12.2006 12:15:00 11
1.12.2006 12:21:00 21

Pač čas, ki je v tem vmesnem intervalu, se pravi 5 min, in pa povprečna vrednost v tem 5 minutnem intervalu.

Lepo bi prosil koga za pomoč.

LP

mHook ::

Za prvi stolpec odštej sekunde, za drugi pa prikaži samo sekunde.

DATEADD(second, -DATEPART(second, dtime), dtime))
DATEPART(second, dtime)

EDIT: pozabil minus

Zgodovina sprememb…

  • spremenil: mHook ()

mmaestro ::

@mHook hvala za odgovor, sam mi ni čisto jasno kaj hočeš povedat:\ oz kako bi si s tem pomagal. Bi te lepo prosil, če bi mi še malo razložil.

LP

mHook ::

V bistvu sem ti odgovoril čisto nekaj drugega kot si rabil.

Ti bi rad vrednost naslednjega intervala prikazano pri prejšnjem?

Kot pišeš se vrednosti shranjujejo vsakih 5s. V primeru izgleda da se piše vsako minuto. Kje so 5s vrednosti? Kaj se zgodi z vrednostmi (sešteje, povprečje)?
Zakaj ti manjka podatek za 12:20?

Kaj ti določa 5-minutne intervale (12:15, 15:21 ni 5 minut narazen)?
In 11 ni povprečje od 15-19. (10+11+9+12+8)/5=10

Daj malo več podatkov (lahko tudi datoteko) in kako bi rad imel podatke prikazane (povprečje za preteklih 5 minut, drseča sredina?).

mmaestro ::

Ja tisto, da je povprešna vrednost 11 sem se zmotil naj bi blo 10.

Tisto glede primera, pač sem si podatke kar malo zmislil, pač vrednosti se ne shranjujejo an točno 5s v bistvu ni nič določeno na kolk se shrani, ko se pač spremeni kak podatek se to zapiše v bazo, sam teh vrednosti je npr v 5 minutah kar dosti.

Pa tisto, ko manjka 12:20 tut ni glih pomembno, tisto je bil zgolj primer na hitro napisan, ki je zmišljen, hotel sem pač samo nekako predstavit, kaj bi rad imel, pa nisem znal glih z besedami vsega napisat.

Glede intervalov in vrednosti je tako, da pač če obravnavamo recimo interval od 12:15 - 12:19, potem zapisalo kot čas zraven povprečja ena številka iz tega intervala npr 12:15, zraven naslednjega 12:20 itd. vrednosti poleg časa pa bi bile povprečje vrednosti, ki pripadajo določeni uri, seštevek vrednosti / št. vrednosti, pač AVG funkcija v sqlu.

Upam, da sem zdaj malo bolj razjasnil kaj hočem.

LP

zigi ::

Pišem fraj glave in nisem to stestiral. Lahko bi naredil nekak takole:
if not exist (select 1 from sysobjects where name = 'tabela1')
	create table tabela1(dtime datetime, value decimal(19,2))
go
declare @dtime datetime
declare @value int
declare @temp decimal(19,2)
set @temp = 0.00

declare c cursor for
select dtime, value
from tabela

open c
fetch next from c
into @dtime, @value

while @@fetch_status = 0
begin
	if (second(@dtime) % 5 = 0))
	begin
		set @temp = @temp / 5
		insert into tabela1 values(@dtime, @temp)
		set @temp = @value
	end
	else
		set @temp = @temp + @value

	fetch next from c
	into @dtime, @value
end

close c
deallocate c


Torej iz tvoje tabele (tabela) kreiraš novo tabelo (tabela1), v kateri potem dobiš ustrezen izpis. Če to sploh dela :)

Zgodovina sprememb…

  • spremenil: zigi ()


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Težave Firefox-om

Oddelek: Pomoč in nasveti
71938 (1811) mikes
»

Kako najceneje iz Nizozemske in nazaj (strani: 1 2 )

Oddelek: Loža
508765 (7580) _marko
»

SMTP problem

Oddelek: Programska oprema
7853 (767) |GrEgOr|
»

[VBA Excel]

Oddelek: Programiranje
8985 (919) Muzo
»

SQL CNVERT; konvertanje datuma

Oddelek: Programiranje
141237 (1043) frudi

Več podobnih tem