timestamp

Fragen und Probleme rund um die Abfragespache SQL.
akretschmer
Erfahrener Benutzer
Beiträge: 7551
Registriert: So 29. Okt 2006, 13:35
Wohnort: Kaufbach, Sachsen, Germany, Germany
Kontaktdaten:

Re: timestamp

Beitrag von akretschmer » Mi 28. Nov 2018, 15:52

Ach ja, den von mir gezeigten JOIN kannst Du entsprechend anpassen - überlasse ich Dir jetzt mal zur Übung.
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

simar
Benutzer
Beiträge: 46
Registriert: Di 9. Okt 2018, 17:40

Re: timestamp

Beitrag von simar » Mi 28. Nov 2018, 15:54

bin dran, danke

simar
Benutzer
Beiträge: 46
Registriert: Di 9. Okt 2018, 17:40

Re: timestamp

Beitrag von simar » Mi 28. Nov 2018, 16:53

funktioniert!!
zu welchem Zweck? Zur Kontrolle von Trainingszeiten

simar
Benutzer
Beiträge: 46
Registriert: Di 9. Okt 2018, 17:40

Re: timestamp

Beitrag von simar » Sa 29. Dez 2018, 23:44

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

akretschmer
Erfahrener Benutzer
Beiträge: 7551
Registriert: So 29. Okt 2006, 13:35
Wohnort: Kaufbach, Sachsen, Germany, Germany
Kontaktdaten:

Re: timestamp

Beitrag von akretschmer » So 30. Dez 2018, 11:17

wie jetzt, da sind 10 Spalten, die du addieren willst?
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

simar
Benutzer
Beiträge: 46
Registriert: Di 9. Okt 2018, 17:40

Re: timestamp

Beitrag von simar » So 30. Dez 2018, 12:03

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.

akretschmer
Erfahrener Benutzer
Beiträge: 7551
Registriert: So 29. Okt 2006, 13:35
Wohnort: Kaufbach, Sachsen, Germany, Germany
Kontaktdaten:

Re: timestamp

Beitrag von akretschmer » So 30. Dez 2018, 12:12

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.
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

pogomips
Benutzer
Beiträge: 78
Registriert: Fr 18. Nov 2016, 09:55

Re: timestamp

Beitrag von pogomips » So 30. Dez 2018, 12:53

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.

simar
Benutzer
Beiträge: 46
Registriert: Di 9. Okt 2018, 17:40

Re: timestamp

Beitrag von simar » So 30. Dez 2018, 13:21

@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)

akretschmer
Erfahrener Benutzer
Beiträge: 7551
Registriert: So 29. Okt 2006, 13:35
Wohnort: Kaufbach, Sachsen, Germany, Germany
Kontaktdaten:

Re: timestamp

Beitrag von akretschmer » So 30. Dez 2018, 14:58

ahhh so.

Also mal als Demo:

Code: Alles auswählen

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:

Code: Alles auswählen

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)
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

Antworten