min() summieren

Fragen und Probleme rund um die Abfragespache SQL.
Antworten
simar
Benutzer
Beiträge: 41
Registriert: Di 9. Okt 2018, 17:40

min() summieren

Beitrag von simar » Mo 3. Dez 2018, 11:15

hallo zusammen,
vielleicht wieder etwas für euch zum gähnen
ist es möglich eine Abfrage nach 'n' Mindestwerten zu summieren

Vorgabe Tabelle:
name, woche,ergebnis
maier, 10, 70
maier, 10, 50
maier, 10, 100
maier, 11, 10
maier, 11, 50
maier, 11, 100
maier, 12, 20
maier, 12, 50
maier, 12, 100
-------------------
Ergebnis select nach min() pro woche:
name, woche, min
maier, 10, 50
maier, 11, 10
maier, 12, 20
------------------
mein ziel:
name, summe
maier, 80

besten Dank vorab für eure Hilfe
gruß simar

castorp
Erfahrener Benutzer
Beiträge: 1086
Registriert: Sa 27. Jun 2009, 22:24
Wohnort: Bayern

Re: min() summieren

Beitrag von castorp » Mo 3. Dez 2018, 11:35

Nimm das Statement was Du schon hast, und pack es in eine sog. Derived Table (auch als sub-select bekannt):

Code: Alles auswählen

select name, sum(min_value)
from (
  select name, woche, min(ergebnis) as min_value
  from the_table 
  group by name, woche
) t
group by name;
A SQL query walks into a bar and sees two tables. He walks up to them and says 'Can I join you?'

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

Re: min() summieren

Beitrag von simar » Mo 3. Dez 2018, 12:18

Danke, hab ich falsch dargestellt der 'name' liegt in einer anderen Tabelle wie woche und ergebnis
und da beginnt mein Problem
da der 'name' aus einer anderen Tabelle kommt bringt die abfrage 'fehlender Eintrag in FROM-Klausel für Tabelle'
wenn ich ich die 'From + where' Bedingungen von Tabelle 'name' hinzu füge passt der Übergang zum inneren select nicht

castorp
Erfahrener Benutzer
Beiträge: 1086
Registriert: Sa 27. Jun 2009, 22:24
Wohnort: Bayern

Re: min() summieren

Beitrag von castorp » Mo 3. Dez 2018, 12:52

Aber Du hast doch bereits eine Abfrage die funktioniert? Die packst Du einfach in den from (...) Teil rein.
A SQL query walks into a bar and sees two tables. He walks up to them and says 'Can I join you?'

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

Re: min() summieren

Beitrag von simar » Mo 3. Dez 2018, 15:17

der select läuft durch danke wieder etws gelernt, summiert aber leider nicht das Ergebnis des 1. selects sondern summiert die min ergebnisse der einheiten 1 bis 3 also 50+25+20+60+15+39
hatte es aber auch falsch dargestellt deshalb ein neuer Versuch
Vorgabe Tabelle:
name, woche,ergebnis, einheit
maier, 10, 70,1
maier, 10, 50,1
maier, 10, 100,1
maier, 10, 25,2
maier, 10, 50,2
maier, 10, 100,2
maier, 10, 20,3
maier, 10, 50,3
maier, 10, 100,3
maier, 11, 90,1
maier, 11, 60,1
maier, 11, 100,1
maier, 11, 15,2
maier, 11, 50,2
maier, 11, 100,2
maier, 11, 39,3
maier, 11, 51,3
maier, 11, 100,3
-------------------
Ergebnis select nach min() pro woche: <das funktioniert
name, woche, min
maier, 10, 20
maier, 11, 15
ziel:
name, sum(min)
maier, 35

ich komme mit meinen bisherigen versuchen nur zu einem unbefriedigenden Ergebnis
name, woche, min sun(min)
maier, 10, 20, 35
maier, 11, 15, 35
vielleicht geht es ja doch besser

castorp
Erfahrener Benutzer
Beiträge: 1086
Registriert: Sa 27. Jun 2009, 22:24
Wohnort: Bayern

Re: min() summieren

Beitrag von castorp » Mo 3. Dez 2018, 15:47

Es wäre wirklich hilfreich, wenn Du uns Deine tatsächlichen Statements zeigst.

Angenommen Dein "select nach min() pro woche" sieht so aus:

Code: Alles auswählen

select name, woche, min(ergebnis)
from the_table
group by name, woche
Dann kriegst Du das Ergebnis welches Du haben willst, mit exakt dem Statement was ich am Anfang schon geschrieben habe:

Code: Alles auswählen

select name, sum(min_value)
from (
  select name, woche, min(ergebnis) as min_value
  from the_table 
  group by name, woche
) t
group by name;
Dein "unbefriedigendes" Ergebnis sieht so aus, als würdest Du in dem äusseren SELECT (nochmal) ein "group by name, woche, min_value" machen, nicht ein "group by name" wie meine Abfrage das macht.

Online Beispiel: https://rextester.com/RLNW67428
A SQL query walks into a bar and sees two tables. He walks up to them and says 'Can I join you?'

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

Re: min() summieren

Beitrag von simar » Mo 3. Dez 2018, 18:02

ich finde den Fehler nicht
der select summiert aus jeder einheit der woche den kleinsten wert, anstatt den kleinsten wert pro woche

Gisman
Erfahrener Benutzer
Beiträge: 1115
Registriert: Fr 20. Jan 2006, 15:30
Wohnort: Pfalz
Kontaktdaten:

Re: min() summieren

Beitrag von Gisman » Di 4. Dez 2018, 07:40

Wir würden dir ja gerne helfen, aber ohne zu sehen was du machst, geht das nicht.

Antworten