Tema: Re: MSSQL : Kaip gauti sumini laika pagal kintamojo busena?
Autorius: bala nemate
Data: 2010-03-22 06:55:41
On Mon, 22 Mar 2010 04:40:50 +0200, Laimis wrote:

> bala nemate rašė:
> 
>> turiu lenta, kurioje fiksuojama, kada pasikeite yra irengimo busena
>> (1-dirba, 0-stovi) ir laiko stampas. reikia susumuoti atidirbta laika (jei
>> 1 atsistojo 12:12, o 0 - 12:20, skiasi pradirbta 8 minutes ir t.t.). galit
>> gal ant kelio uzvesti, nuo ko pradeti aiskintis?
>>
>> misliju, uzklausoje reikia koki cikla prasukti ir persidelioti busenas is
>> eiluciu i stulpus ir tada issirankioti datos skirtuma...(be ciklo turbut
>> niekaip?)
> 
> Na kodėl gi niekaip, gana paprastai:
> 
> SELECT SUM(DATEDIFF(second, s.ts, e.ts))
> 
> FROM
> 	(SELECT ts, ROW_NUMBER() OVER(ORDER BY ts) AS rn FROM
> 	 dbo.tdata WHERE status = 1) s
> 
> INNER JOIN
> 
> 	(SELECT ts, ROW_NUMBER() OVER(ORDER BY ts) AS rn FROM
>   	dbo.tdata WHERE status = 0) e
> 
> ON s.rn = e.rn
> 
> 
> (lentelė 'tdata': 'status' -- būklė (0/1), ts -- laiko štampas)
> 
> Ciklas galėtų patikrinti ar visi laiko momentai yra teisingi (jų 
> netrūksta, jie nuoseklūs), nors jei duomenų teisingumą garantuoja kitas 
> šaltinis, tai patikra galėtų būti nebent tik tokia:
> 
> SELECT ts.cnt - te.cnt FROM
> (SELECT COUNT(ts) AS cnt FROM tdata WHERE status = 0) te,
> (SELECT COUNT(ts) AS cnt FROM tdata WHERE status = 1) ts

aha. dekui labai. einu skaityti apie OVER ir Row_Number.

-- 
bn/mj
icq : 171288416
skype : bala.nemate
"The blues ain't about making yourself feel better.
it's about making other people feel worse."
					-- Bleeding Gums Murphy
3Dastronomyagricultureaudioautosautos.audiautos.audioautos.binariesautos.bmwautos.clubautos.fordautos.hondacrxautos.japanautos.mercedesautos.opelautos.sportautos.volvoautos.vwaviaavia.binariesbankcardsbinariesbooksbuildingcinemacommercecomp.hardwarecomp.softwarecomp.lietuvinimascomp.networksculturedarbas.ieskaudarbas.siulaudesigneconomicselectronicsfaunafauna.aquafauna.binariesfishingflorafotofoto.binariesgamesgames.csgames.onlinegsmgurmanaihumourhumour.binariesinternetlawmicrosoftmotomusicmusic.binariesmusic.instrumentsmusic.LT.binariesnavigacijaphppoliticsprogrammingrpgsportstudyingsveikatatalktesttranslationtransportationtraveltravel.binariestvunixvideovideo.binarieswatersportswwwwww.flashpdaautos.supermama.ltmobiledarbasretro.3Dretro.agricultureretro.astronomyretro.audioretro.autosretro.autos.audiretro.autos.audioretro.autos.binariesretro.autos.bmwretro.autos.clubretro.autos.fordretro.autos.hondacrxretro.autos.japanretro.autos.mercedesretro.autos.opelretro.autos.sportretro.autos.supermamaretro.autos.supermama.ltretro.autos.volvoretro.autos.vwretro.aviaretro.avia.binariesretro.bankcardsretro.beosretro.binariesretro.booksretro.buildingretro.cinemaretro.commerceretro.compretro.comp.hardwareretro.comp.lietuvinimasretro.comp.networksretro.comp.softwareretro.cultureretro.darbasretro.darbas.ieskauretro.darbas.siulauretro.designretro.economicsretro.electronicsretro.e-vejasretro.faunaretro.fauna.aquaretro.fauna.binariesretro.fishingretro.floraretro.fotoretro.foto.binariesretro.gamesretro.games.csretro.games.onlineretro.games.rpgretro.genealogijaretro.gsmretro.gurmanairetro.humourretro.humour.binariesretro.internetretro.YZFretro.YZF.nebukretro.YZF.nebuk.netikintisretro.YZF.nebuk.netikintis.bukretro.YZF.nebuk.netikintis.buk.tikintisretro.lawretro.microsoftretro.mobileretro.motoretro.musicretro.music.binariesretro.music.instrumentsretro.music.LTretro.music.LT.binariesretro.navigacijaretro.newsretro.news.taisyklesretro.newuserretro.pdaretro.phpretro.politicsretro.programmingretro.rpgretro.sportretro.studyingretro.sveikataretro.talkretro.translationretro.transportationretro.travelretro.travel.binariesretro.tvretro.unixretro.videoretro.video.binariesretro.watersportsretro.wwwretro.www.flashdiylt.rkm.news.announcelt.rkm.news.newuser