timestamp

Danke Dir,
mußte noch die “Zeit” warum auch immer in “Zeit/1000” ändern dann hat es gepasst.
Super

Guten Abend, ich habe mal wieder ein Problem vielleicht gibt es auch dafür eine Lösung.

Meine Tabelle

id, timestamp, number, sequence
38468, 1542461006075 ,1,1
38475, 1542461028906 ,2,1
38483, 1542461054746 ,3,1
38492, 1542461079093 ,4,1
38501, 1542461104593 ,5,1
38507, 1542461132306 ,6,1
38527, 1542461199444 ,7,1
38535, 1542461224440 ,8,1
38546, 1542461262026 ,9,1
38552, 1542461287806 ,10,1
38969, 1542465082866 ,1,2
38974, 1542465105505 ,2,2
38982, 1542465136039 ,3,2
38987, 1542465164113 ,4,2
38995, 1542465188068 ,5,2
39002, 1542465213866 ,6,2
39007, 1542465236695 ,7,2
39013, 1542465263268 ,8,2
39021, 1542465289305 ,9,2
39026, 1542465314526 ,10,2
.
.
.

Das Ziel der Abfrage, die Ausgabe der Differenzen zwischen den timestamp’s number 10 und timestamp’s number 1

bin für jede Hilfe dankbar
Gruß Simar

gähn.

test=*# select * from simar ;
  id   |   timestamp   | number | sequence 
-------+---------------+--------+----------
 38468 | 1542461006075 |      1 |        1
 38475 | 1542461028906 |      2 |        1
 38483 | 1542461054746 |      3 |        1
 38492 | 1542461079093 |      4 |        1
 38501 | 1542461104593 |      5 |        1
 38507 | 1542461132306 |      6 |        1
 38527 | 1542461199444 |      7 |        1
 38535 | 1542461224440 |      8 |        1
 38546 | 1542461262026 |      9 |        1
 38552 | 1542461287806 |     10 |        1
 38969 | 1542465082866 |      1 |        2
 38974 | 1542465105505 |      2 |        2
 38982 | 1542465136039 |      3 |        2
 38987 | 1542465164113 |      4 |        2
 38995 | 1542465188068 |      5 |        2
 39002 | 1542465213866 |      6 |        2
 39007 | 1542465236695 |      7 |        2
 39013 | 1542465263268 |      8 |        2
 39021 | 1542465289305 |      9 |        2
 39026 | 1542465314526 |     10 |        2
(20 rows)

test=*# with tmp as (select * from simar where number in (10,1)) select *, timestamp - lag(timestamp) over (partition by sequence order by id) as differenz from tmp;
  id   |   timestamp   | number | sequence | differenz 
-------+---------------+--------+----------+-----------
 38468 | 1542461006075 |      1 |        1 |          
 38552 | 1542461287806 |     10 |        1 |    281731
 38969 | 1542465082866 |      1 |        2 |          
 39026 | 1542465314526 |     10 |        2 |    231660
(4 rows)

test=*#

die einen gähnen die anderen schwitzen und verzweifeln ich gehöre leider zu der 2. Gruppe.

Besten Dank für die superschnelle Hilfe, einfach genial!!

Gruß Simar

id, timestamp, number, sequence
38468, 1542461006075 ,1,1
38475, 1542461028906 ,2,1
38483, 1542461054746 ,3,1
38492, 1542461079093 ,4,1
38501, 1542461104593 ,5,1
38507, 1542461132306 ,6,1
38527, 1542461199444 ,7,1
38535, 1542461224440 ,8,1
38546, 1542461262026 ,9,1
38552, 1542461287806 ,10,1
38969, 1542465082866 ,11,2
38974, 1542465105505 ,12,2
38982, 1542465136039 ,13,2
38987, 1542465164113 ,14,2
38995, 1542465188068 ,15,2
39002, 1542465213866 ,16,2
39007, 1542465236695 ,17,2
39013, 1542465263268 ,18,2
39021, 1542465289305 ,19,2
39026, 1542465314526 ,20,2
39036, 1542465373233 ,21,3


funktioniert das auch in der konstellationen mit fortlaufenden Nummern,
also gleichzeitig die Differenz zwischen 10 und 1; Differenz 20 und 11; Differenz 30 und 21
wäre natürlich noch genialer

meinst Du so?

test=*# select * from simar ;
  id   |   timestamp   | number | sequence 
-------+---------------+--------+----------
 38468 | 1542461006075 |      1 |        1
 38475 | 1542461028906 |      2 |        1
 38483 | 1542461054746 |      3 |        1
 38492 | 1542461079093 |      4 |        1
 38501 | 1542461104593 |      5 |        1
 38507 | 1542461132306 |      6 |        1
 38527 | 1542461199444 |      7 |        1
 38535 | 1542461224440 |      8 |        1
 38546 | 1542461262026 |      9 |        1
 38552 | 1542461287806 |     10 |        1
 38969 | 1542465082866 |      1 |        2
 38974 | 1542465105505 |      2 |        2
 38982 | 1542465136039 |      3 |        2
 38987 | 1542465164113 |      4 |        2
 38995 | 1542465188068 |      5 |        2
 39002 | 1542465213866 |      6 |        2
 39007 | 1542465236695 |      7 |        2
 39013 | 1542465263268 |      8 |        2
 39021 | 1542465289305 |      9 |        2
 39026 | 1542465314526 |     10 |        2
(20 rows)

test=*# select *, s2.timestamp - s1.timestamp as difference from simar s1 left join simar s2 on ((s2.number,s2.sequence)=(s1.number +1, s1.sequence)); 
  id   |   timestamp   | number | sequence |  id   |   timestamp   | number | sequence | difference 
-------+---------------+--------+----------+-------+---------------+--------+----------+------------
 38468 | 1542461006075 |      1 |        1 | 38475 | 1542461028906 |      2 |        1 |      22831
 38969 | 1542465082866 |      1 |        2 | 38974 | 1542465105505 |      2 |        2 |      22639
 38475 | 1542461028906 |      2 |        1 | 38483 | 1542461054746 |      3 |        1 |      25840
 38974 | 1542465105505 |      2 |        2 | 38982 | 1542465136039 |      3 |        2 |      30534
 38483 | 1542461054746 |      3 |        1 | 38492 | 1542461079093 |      4 |        1 |      24347
 38982 | 1542465136039 |      3 |        2 | 38987 | 1542465164113 |      4 |        2 |      28074
 38492 | 1542461079093 |      4 |        1 | 38501 | 1542461104593 |      5 |        1 |      25500
 38987 | 1542465164113 |      4 |        2 | 38995 | 1542465188068 |      5 |        2 |      23955
 38501 | 1542461104593 |      5 |        1 | 38507 | 1542461132306 |      6 |        1 |      27713
 38995 | 1542465188068 |      5 |        2 | 39002 | 1542465213866 |      6 |        2 |      25798
 38507 | 1542461132306 |      6 |        1 | 38527 | 1542461199444 |      7 |        1 |      67138
 39002 | 1542465213866 |      6 |        2 | 39007 | 1542465236695 |      7 |        2 |      22829
 38527 | 1542461199444 |      7 |        1 | 38535 | 1542461224440 |      8 |        1 |      24996
 39007 | 1542465236695 |      7 |        2 | 39013 | 1542465263268 |      8 |        2 |      26573
 38535 | 1542461224440 |      8 |        1 | 38546 | 1542461262026 |      9 |        1 |      37586
 39013 | 1542465263268 |      8 |        2 | 39021 | 1542465289305 |      9 |        2 |      26037
 38546 | 1542461262026 |      9 |        1 | 38552 | 1542461287806 |     10 |        1 |      25780
 39021 | 1542465289305 |      9 |        2 | 39026 | 1542465314526 |     10 |        2 |      25221
 38552 | 1542461287806 |     10 |        1 |       |               |        |          |           
 39026 | 1542465314526 |     10 |        2 |       |               |        |          |           
(20 rows)

test=*#

Nein nicht so,
die Spalte number ist fortlaufend bis zB bis 100, die Spalte sequence erhöht sich im bei jeder Zehnerzahl in spalte number um 1

Ach ja, den von mir gezeigten JOIN kannst Du entsprechend anpassen - überlasse ich Dir jetzt mal zur Übung.

bin dran, danke

funktioniert!!
zu welchem Zweck? Zur Kontrolle von Trainingszeiten

Vor Jahreswechsel noch ein kleines Problem für mich leider mal wieder nicht lösbar

Mit dem angepasseten Select von “akretschmer”
select Disziplin, number_a, number_b, s2.timestamp - s1.timestamp as difference from simar s1 left join simar s2 on ((s2.number,s2.sequence)=(s1.number +9, s1.sequence));

bekomme ich die Differenz aus timestamp von number_a und timestamp number_b

Disziplin | number_a | number_b | difference | decimal_score
" Auflage Training" 1 , 10 “00:04:59” sum aus 1 bis 10
" Auflage Training" 11 , 20 “00:05:54” sum aus 11 bis 20
" Auflage Training" 21 , 30 “00:04:08” sum aus 21 bis 30
" Auflage Training" 1 , 10 “00:04:49”
" Auflage Training" 11 , 20 “00:04:24”
" Auflage Training" 21 , 30 “00:04:05”
" Auflage Training" 1 , 10 “00:03:52”
" Auflage Training" 11 , 20 “00:04:07”
" Auflage Training" 21 , 30 “00:04:15”
" Auflage Training" 1 , 10 “00:04:32”
" Auflage Training" 11 , 20 “00:04:13”
" Auflage Training" 21 , 30 “00:03:42”

nun liegen aber zwischen number_a und number_b jeweils 10 Einzelwerte “decimal_score” und diese Werte möchte ich summieren und mit der Abfrage anzeigen.
Vielleicht gibt es ja auch dafür eine Lösung wenn nicht sag ich tzotzdem schon mal Danke und wünsch allen einen guten Rutsch ins neue Jahr
Gruß Simar

wie jetzt, da sind 10 Spalten, die du addieren willst?

ja genau, wird aber mit dem Ansatz nicht gehen, denke ich muß zuerst summieren und danach nach der Differenzzeit suchen aber das ist mir zu hoch das bring ich in meinen “alten” Kopf nicht mehr rein.

systematisch rangehen. Du könntest erst die Spalten da alle erstellen, und das in ein Subselect packen und dann daraus die Summe der Spalten. Alternativ mit WITH - Syntax arbeiten.

Sind da wirklich 10 Spalten oder sind das eher 10 Zeilen? (aus denen Zwischensummen entstehen sollen?)
Auch wenn aus den Code Fragmenten für mich kein funktionierendes Statement entsteht (woher kommen number_a, number_b, …?) und weil ich die rote Spalte als (einzige) neue Spalte inerpretiere meine Vermutung:
Es ist riecht nach Running Total (oder absolut) mit Partitions.

@pogomips, 10 Zeilen natürlich hast recht. Die zwischensummen 1bis 10, 11 bis 20, 21 bis 30 sind für sich gesehen nicht das Problem, mein Problem
kommt beim erstellen des Subselects mit dem Berechnen der timestamp differenz, das ja dank der Hilfe von akretschmer auch funktioniert.
numper_a, number_b sind paralell abfragen zur differenzberechnung der timestamps ( hab die in min und sec gewandelt)

ahhh so.

Also mal als Demo:

test=*# create table demo(i int, val int);
CREATE TABLE
test=*# insert into demo select s, random()*1000 from generate_series(1,30) s;
INSERT 0 30
test=*# commit;
COMMIT
test=# select * from demo;
 i  | val 
----+-----
  1 | 641
  2 | 468
  3 | 580
  4 | 186
  5 | 252
  6 | 876
  7 |  19
  8 | 155
  9 | 156
 10 | 516
 11 | 396
 12 | 309
 13 | 190
 14 | 868
 15 | 667
 16 | 944
 17 | 923
 18 | 701
 19 | 145
 20 | 989
 21 | 387
 22 | 605
 23 | 951
 24 | 628
 25 | 118
 26 | 521
 27 | 615
 28 | 693
 29 | 646
 30 | 672
(30 rows)

und nun suchst Du:

test=*# select i/10 as c, sum(val) from demo group by i/10 order by i/10;
 c | sum  
---+------
 0 | 3333
 1 | 5659
 2 | 6153
 3 |  672
(4 rows)

Ich bekomm es nicht auf die Reihe

Das sind die Daten aus 2 Tabellen

Tabelle1 mit den Spalten: “shooters_id-2”,“name”,“session_id”

Tabelle2 mit den Spalten: "decimal_score,“session_id”,“shooters_id”,“sequence”,“series”,“timestamp”,“number”

decimal_score,“session_id”,“shooters_id”,“sequence”,“series”,“timestamp”,“number”,“shooters_id-2”,“name”
10.6,“6518b6b0-9ce1-492a-a1e4-32118d4b91b6-1546021854584”,2,1,0,“1546022384672”,1,“2”,“Maier”
10.4,“6518b6b0-9ce1-492a-a1e4-32118d4b91b6-1546021854584”,2,1,0,“1546022416536”,2,“2”,“Maier”
10.6,“6518b6b0-9ce1-492a-a1e4-32118d4b91b6-1546021854584”,2,1,0,“1546022444453”,3,“2”,“Maier”
10.8,“6518b6b0-9ce1-492a-a1e4-32118d4b91b6-1546021854584”,2,1,0,“1546022469674”,4,“2”,“Maier”
10.3,“6518b6b0-9ce1-492a-a1e4-32118d4b91b6-1546021854584”,2,1,0,“1546022496027”,5,“2”,“Maier”
10.4,“6518b6b0-9ce1-492a-a1e4-32118d4b91b6-1546021854584”,2,1,0,“1546022523525”,6,“2”,“Maier”
10.5,“6518b6b0-9ce1-492a-a1e4-32118d4b91b6-1546021854584”,2,1,0,“1546022548664”,7,“2”,“Maier”
10.6,“6518b6b0-9ce1-492a-a1e4-32118d4b91b6-1546021854584”,2,1,0,“1546022579722”,8,“2”,“Maier”
10.5,“6518b6b0-9ce1-492a-a1e4-32118d4b91b6-1546021854584”,2,1,0,“1546022607972”,9,“2”,“Maier”
10.4,“6518b6b0-9ce1-492a-a1e4-32118d4b91b6-1546021854584”,2,1,0,“1546022683246”,10,“2”,“Maier”
10.8,“6518b6b0-9ce1-492a-a1e4-32118d4b91b6-1546021854584”,2,2,1,“1546022721278”,11,“2”,“Maier”
10,“6518b6b0-9ce1-492a-a1e4-32118d4b91b6-1546021854584”,2,2,1,“1546022823407”,12,“2”,“Maier”
10.3,“6518b6b0-9ce1-492a-a1e4-32118d4b91b6-1546021854584”,2,2,1,“1546022858316”,13,“2”,“Maier”
10.9,“6518b6b0-9ce1-492a-a1e4-32118d4b91b6-1546021854584”,2,2,1,“1546022884652”,14,“2”,“Maier”
10.6,“6518b6b0-9ce1-492a-a1e4-32118d4b91b6-1546021854584”,2,2,1,“1546022917245”,15,“2”,“Maier”
10.2,“6518b6b0-9ce1-492a-a1e4-32118d4b91b6-1546021854584”,2,2,1,“1546022948144”,16,“2”,“Maier”
10.6,“6518b6b0-9ce1-492a-a1e4-32118d4b91b6-1546021854584”,2,2,1,“1546022984577”,17,“2”,“Maier”
10.5,“6518b6b0-9ce1-492a-a1e4-32118d4b91b6-1546021854584”,2,2,1,“1546023015354”,18,“2”,“Maier”
10.6,“6518b6b0-9ce1-492a-a1e4-32118d4b91b6-1546021854584”,2,2,1,“1546023047985”,19,“2”,“Maier”
10.7,“6518b6b0-9ce1-492a-a1e4-32118d4b91b6-1546021854584”,2,2,1,“1546023075754”,20,“2”,“Maier”
10.3,“6518b6b0-9ce1-492a-a1e4-32118d4b91b6-1546021854584”,2,3,2,“1546023105530”,21,“2”,“Maier”
10.2,“6518b6b0-9ce1-492a-a1e4-32118d4b91b6-1546021854584”,2,3,2,“1546023134703”,22,“2”,“Maier”
9.9,“6518b6b0-9ce1-492a-a1e4-32118d4b91b6-1546021854584”,2,3,2,“1546023159610”,23,“2”,“Maier”
10.7,“6518b6b0-9ce1-492a-a1e4-32118d4b91b6-1546021854584”,2,3,2,“1546023188783”,24,“2”,“Maier”
10.5,“6518b6b0-9ce1-492a-a1e4-32118d4b91b6-1546021854584”,2,3,2,“1546023213607”,25,“2”,“Maier”
9.9,“6518b6b0-9ce1-492a-a1e4-32118d4b91b6-1546021854584”,2,3,2,“1546023240742”,26,“2”,“Maier”
10.7,“6518b6b0-9ce1-492a-a1e4-32118d4b91b6-1546021854584”,2,3,2,“1546023270551”,27,“2”,“Maier”
10.6,“6518b6b0-9ce1-492a-a1e4-32118d4b91b6-1546021854584”,2,3,2,“1546023298196”,28,“2”,“Maier”
10.2,“6518b6b0-9ce1-492a-a1e4-32118d4b91b6-1546021854584”,2,3,2,“1546023325311”,29,“2”,“Maier”
10.6,“6518b6b0-9ce1-492a-a1e4-32118d4b91b6-1546021854584”,2,3,2,“1546023353687”,30,“2”,“Maier”

mein Endziel
name, number_a, number_b,zwischensumme, gesamtsumme, zeit
“Maier” “1” “10” “105.1” “313.9” “00:04:59”
“Maier” “11” “20” “105.2” “313.9” “00:05:54”
“Maier” “21” “30” “103.6” “313.9” “00:04:08”

vielleicht ist es so übersichtlicher und nachvollziehbarer was ich meine

Also, wenn das Deine Tabelle sei, die zweite, ich nenne sie mal T2:

test=*# select * from t2;
 decimal_score |                     session_id                     | shooters_id | sequence | series |   timestamp   | number | shooters_id_2 | name  
---------------+----------------------------------------------------+-------------+----------+--------+---------------+--------+---------------+-------
          10.6 | 6518b6b0-9ce1-492a-a1e4-32118d4b91b6-1546021854584 |           2 |        1 |      0 | 1546022384672 |      1 |             2 | Maier
          10.4 | 6518b6b0-9ce1-492a-a1e4-32118d4b91b6-1546021854584 |           2 |        1 |      0 | 1546022416536 |      2 |             2 | Maier
          10.6 | 6518b6b0-9ce1-492a-a1e4-32118d4b91b6-1546021854584 |           2 |        1 |      0 | 1546022444453 |      3 |             2 | Maier
          10.8 | 6518b6b0-9ce1-492a-a1e4-32118d4b91b6-1546021854584 |           2 |        1 |      0 | 1546022469674 |      4 |             2 | Maier
          10.3 | 6518b6b0-9ce1-492a-a1e4-32118d4b91b6-1546021854584 |           2 |        1 |      0 | 1546022496027 |      5 |             2 | Maier
          10.4 | 6518b6b0-9ce1-492a-a1e4-32118d4b91b6-1546021854584 |           2 |        1 |      0 | 1546022523525 |      6 |             2 | Maier
          10.5 | 6518b6b0-9ce1-492a-a1e4-32118d4b91b6-1546021854584 |           2 |        1 |      0 | 1546022548664 |      7 |             2 | Maier
          10.6 | 6518b6b0-9ce1-492a-a1e4-32118d4b91b6-1546021854584 |           2 |        1 |      0 | 1546022579722 |      8 |             2 | Maier
          10.5 | 6518b6b0-9ce1-492a-a1e4-32118d4b91b6-1546021854584 |           2 |        1 |      0 | 1546022607972 |      9 |             2 | Maier
          10.4 | 6518b6b0-9ce1-492a-a1e4-32118d4b91b6-1546021854584 |           2 |        1 |      0 | 1546022683246 |     10 |             2 | Maier
          10.8 | 6518b6b0-9ce1-492a-a1e4-32118d4b91b6-1546021854584 |           2 |        2 |      1 | 1546022721278 |     11 |             2 | Maier
            10 | 6518b6b0-9ce1-492a-a1e4-32118d4b91b6-1546021854584 |           2 |        2 |      1 | 1546022823407 |     12 |             2 | Maier
          10.3 | 6518b6b0-9ce1-492a-a1e4-32118d4b91b6-1546021854584 |           2 |        2 |      1 | 1546022858316 |     13 |             2 | Maier
          10.9 | 6518b6b0-9ce1-492a-a1e4-32118d4b91b6-1546021854584 |           2 |        2 |      1 | 1546022884652 |     14 |             2 | Maier
          10.6 | 6518b6b0-9ce1-492a-a1e4-32118d4b91b6-1546021854584 |           2 |        2 |      1 | 1546022917245 |     15 |             2 | Maier
          10.2 | 6518b6b0-9ce1-492a-a1e4-32118d4b91b6-1546021854584 |           2 |        2 |      1 | 1546022948144 |     16 |             2 | Maier
          10.6 | 6518b6b0-9ce1-492a-a1e4-32118d4b91b6-1546021854584 |           2 |        2 |      1 | 1546022984577 |     17 |             2 | Maier
          10.5 | 6518b6b0-9ce1-492a-a1e4-32118d4b91b6-1546021854584 |           2 |        2 |      1 | 1546023015354 |     18 |             2 | Maier
          10.6 | 6518b6b0-9ce1-492a-a1e4-32118d4b91b6-1546021854584 |           2 |        2 |      1 | 1546023047985 |     19 |             2 | Maier
          10.7 | 6518b6b0-9ce1-492a-a1e4-32118d4b91b6-1546021854584 |           2 |        2 |      1 | 1546023075754 |     20 |             2 | Maier
          10.3 | 6518b6b0-9ce1-492a-a1e4-32118d4b91b6-1546021854584 |           2 |        3 |      2 | 1546023105530 |     21 |             2 | Maier
          10.2 | 6518b6b0-9ce1-492a-a1e4-32118d4b91b6-1546021854584 |           2 |        3 |      2 | 1546023134703 |     22 |             2 | Maier
           9.9 | 6518b6b0-9ce1-492a-a1e4-32118d4b91b6-1546021854584 |           2 |        3 |      2 | 1546023159610 |     23 |             2 | Maier
          10.7 | 6518b6b0-9ce1-492a-a1e4-32118d4b91b6-1546021854584 |           2 |        3 |      2 | 1546023188783 |     24 |             2 | Maier
          10.5 | 6518b6b0-9ce1-492a-a1e4-32118d4b91b6-1546021854584 |           2 |        3 |      2 | 1546023213607 |     25 |             2 | Maier
           9.9 | 6518b6b0-9ce1-492a-a1e4-32118d4b91b6-1546021854584 |           2 |        3 |      2 | 1546023240742 |     26 |             2 | Maier
          10.7 | 6518b6b0-9ce1-492a-a1e4-32118d4b91b6-1546021854584 |           2 |        3 |      2 | 1546023270551 |     27 |             2 | Maier
          10.6 | 6518b6b0-9ce1-492a-a1e4-32118d4b91b6-1546021854584 |           2 |        3 |      2 | 1546023298196 |     28 |             2 | Maier
          10.2 | 6518b6b0-9ce1-492a-a1e4-32118d4b91b6-1546021854584 |           2 |        3 |      2 | 1546023325311 |     29 |             2 | Maier
          10.6 | 6518b6b0-9ce1-492a-a1e4-32118d4b91b6-1546021854584 |           2 |        3 |      2 | 1546023353687 |     30 |             2 | Maier
(30 rows)

test=*#

dann komme ich (fast) auf Dein “Endziel”:

test=*# select name, ((number-1) / 10)*10+1 as number_a, ((number-1) / 10)*10+10 as number_b, sum(decimal_score) as zwischensumme, (select sum(decimal_score) from t2) gesamtsumme,(max(timestamp) - min(timestamp))/1000 * '1second'::interval as zeit  from t2 group by 1,2,3;
 name  | number_a | number_b | zwischensumme | gesamtsumme |   zeit   
-------+----------+----------+---------------+-------------+----------
 Maier |        1 |       10 |         105.1 |       313.9 | 00:04:58
 Maier |       11 |       20 |         105.2 |       313.9 | 00:05:54
 Maier |       21 |       30 |         103.6 |       313.9 | 00:04:08
(3 rows)

test=*#

das “fast”, weil Du offenbar einen Rechnenfehler mit Deinen völlig kaputten Timestamps hast, von 1-10 sind es 00:04:58, nicht 00:04:59 :wink:

Gute Nacht!

Hurra, so findet das Jahr doch noch ein gutes Ende

Junger Mann du bist echt der Hammer gelernt ist eben gelernt, hätte ich so nie hinbekommen!!

Gruß Simar