Forum » Programiranje » Pridobitev podatkov in sortiranje
Pridobitev podatkov in sortiranje
Cvele2011 ::
Pozdravljeni,
mi lahko prosim kdo pomaga glede pridobitve podatkov namreč spodnje podatke bi rad sortiral po datumu nato pa bi rad dobil prvo VP2=_01 nato VP2=99
DATUM VP1 VP2
2011-01-01 08:58:08.000 _02 01
2011-01-02 00:00:00.000 _02 01
2011-01-03 00:00:00.000 _02 99
2011-01-03 15:58:56.000 _02 01
2011-01-03 19:01:45.000 _02 99
2011-01-04 00:00:00.000 _01 01
2011-01-04 08:58:32.000 _02 01
Željeni Rezultat:
2011-01-01 08:58:08.000 _02 01
2011-01-03 00:00:00.000 _02 99
2011-01-02 00:00:00.000 _02 01
2011-01-03 19:01:45.000 _02 99
2011-01-03 15:58:56.000 _02 01
2011-01-04 00:00:00.000 _01 01
2011-01-04 08:58:32.000 _02 01
L.p.
mi lahko prosim kdo pomaga glede pridobitve podatkov namreč spodnje podatke bi rad sortiral po datumu nato pa bi rad dobil prvo VP2=_01 nato VP2=99
DATUM VP1 VP2
2011-01-01 08:58:08.000 _02 01
2011-01-02 00:00:00.000 _02 01
2011-01-03 00:00:00.000 _02 99
2011-01-03 15:58:56.000 _02 01
2011-01-03 19:01:45.000 _02 99
2011-01-04 00:00:00.000 _01 01
2011-01-04 08:58:32.000 _02 01
Željeni Rezultat:
2011-01-01 08:58:08.000 _02 01
2011-01-03 00:00:00.000 _02 99
2011-01-02 00:00:00.000 _02 01
2011-01-03 19:01:45.000 _02 99
2011-01-03 15:58:56.000 _02 01
2011-01-04 00:00:00.000 _01 01
2011-01-04 08:58:32.000 _02 01
L.p.
energetik ::
Najprej bolj jasno napiši, kako so podatki podani. Koliko je stolpcev? Kakšen je format datuma (yyyy-mm-dd ali kej drugega)? In kaj je VP2?
Cvele2011 ::
Prvi stolpec je datum: 2011-01-04 08:58:32.000 se pravi frmata yyyy-MM-dd HH:mm:ss
Drugi stolpec pa je VP1 fromata INT
in pa Tretji stolpec VP2 prav tako INT
Če je vp2 _01 pol je prijava
če je vp2 99 je odjava
pol pa more biti prva prijava nato prva odjava
L.p.
Drugi stolpec pa je VP1 fromata INT
in pa Tretji stolpec VP2 prav tako INT
Če je vp2 _01 pol je prijava
če je vp2 99 je odjava
pol pa more biti prva prijava nato prva odjava
L.p.
_Mare_ ::
Če bi rad samo sortital, je verjetno najbolj simpl z Excelom. For fun, Practical Extraction and Report Language to the rescue (:
Na srečo imaš timestampe v taki obliki, da se jih da sortirat kot stringe.
#!/usr/bin/env perl use warnings; use strict; use feature 'say'; my $input = <<EOL; 2011-01-04 00:00:00.000 _01 99 2011-01-01 08:58:08.000 _02 01 2011-01-02 00:00:00.000 _02 01 2011-01-03 00:00:00.000 _02 99 2011-01-03 15:58:56.000 _02 01 2011-01-03 19:01:45.000 _02 99 2011-01-04 00:00:00.000 _01 01 2011-01-04 08:58:32.000 _02 01 EOL sub one_way { join "\n", map { "$_->{timestamp} _$_->{VP1} $_->{VP2}" } sort { $a->{timestamp} cmp $b->{timestamp} || $a->{VP2} <=> $b->{VP2} } map { /^(?<timestamp>.+?) _(?<VP1>\d+) (?<VP2>\d+)/; +{%+} } split /\n/, shift; } sub or_another { join "\n", map { $_->[0] } sort { $a->[1] cmp $b->[1] || $a->[2] <=> $b->[2] } map { [ $_, /^(.+?) _\d+ (\d+)$/ ] } split /\n/, shift; } say one_way $input; # I like it better print "\n"; say or_another $input;
Na srečo imaš timestampe v taki obliki, da se jih da sortirat kot stringe.
Cvele2011 ::
Tega pa glih ne razumem...;)
Namreč jaz to delam vse v sqlexpress-u tak da bi prosil za obrazložitev....:) najboljše pa bi mi bilo če bi si lahko to naredo kot view.
Namreč jaz to delam vse v sqlexpress-u tak da bi prosil za obrazložitev....:) najboljše pa bi mi bilo če bi si lahko to naredo kot view.
_Mare_ ::
Aa, moj reading comprehension je švoh (spregledal tvoj včerajšnji message o bazi :).
Glede na to, da po navadi INT-i, ki jih dobiš iz baze, niso zero-paddani ali se začnejo z '_', verjetno že te podatke dobiš iz nekega viewa/čudnega querya z kakšno
V vsakem primeru sortiraš z ORDER BY, ki ga dodaš na konc querya/viewa:
To bo sortiralo najprej po datumu, če je slučajno isti, pa po VP2.
Glede na to, da po navadi INT-i, ki jih dobiš iz baze, niso zero-paddani ali se začnejo z '_', verjetno že te podatke dobiš iz nekega viewa/čudnega querya z kakšno
('_' + RIGHT('00' + CONVERT(nvarchar, VP2), 2)T-SQL finto, ki pripne ničle. Al si to pridelal pri kopiranju?
V vsakem primeru sortiraš z ORDER BY, ki ga dodaš na konc querya/viewa:
SELECT .... FROM Whatever ORDER BY Datum, VP2
To bo sortiralo najprej po datumu, če je slučajno isti, pa po VP2.
dolenc ::
Če so podani podatki pravilni potem tak sort ne bo dober, če pa si se malo zatipkal, potem pa bo.
V primeru da se nisi zmotil, jaz ne vidim kako bi to samo z sortom rešil, najlažje bi bilo dodat še en atribut, oznaka osebe(če se recimo na kartico štemplajo ali se vpisuje ročno), pa potem še po tem sortiraš.
Željeni Rezultat:
2011-01-01 08:58:08.000 _02 01
2011-01-03 00:00:00.000 _02 99
2011-01-02 00:00:00.000 _02 01
2011-01-03 19:01:45.000 _02 99
2011-01-03 15:58:56.000 _02 01
2011-01-04 00:00:00.000 _01 01
2011-01-04 08:58:32.000 _02 01
V primeru da se nisi zmotil, jaz ne vidim kako bi to samo z sortom rešil, najlažje bi bilo dodat še en atribut, oznaka osebe(če se recimo na kartico štemplajo ali se vpisuje ročno), pa potem še po tem sortiraš.
Željeni Rezultat:
2011-01-01 08:58:08.000 _02 01
2011-01-03 00:00:00.000 _02 99
2011-01-02 00:00:00.000 _02 01
2011-01-03 19:01:45.000 _02 99
2011-01-03 15:58:56.000 _02 01
2011-01-04 00:00:00.000 _01 01
2011-01-04 08:58:32.000 _02 01
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | Digitalna regulacija tokovnega viraOddelek: Elektrotehnika in elektronika | 2845 (2419) | Red_Mamba |
» | Kdor je ukradel sedem milisekund, je zaslužil milijoneOddelek: Novice / Znanost in tehnologija | 23595 (11313) | TESKAn |
» | GPS kordinateOddelek: Loža | 2677 (2388) | steklo |
» | [SQL] PgAdmin preprosto vprasanje povezano s stolpci v tabeliOddelek: Programiranje | 2197 (1556) | Cvele2011 |
» | Desetletja, stletja, tisocletja...oz. kdaj je zacela 1. dekada (strani: 1 2 3 4 )Oddelek: Loža | 45122 (42770) | egonk |