Hi,
ich habe eine DB-Tabelle 'overview' in folgendem Format:
group_id|person_id|value
-------------------------------
0|0|0
0|0|1
0|0|2
0|20|1
0|20|2
7|0|0
9|4|1
9|4|2
...
Das Werte-Paar (group_id, person_id) ist eindeutig und 100 Kombinationen/Gruppierungen kommen vor.
Der Wert von value liegt zwischen 0 und 4. Jede Kombination/Gruppierung hat mindestens einen Wert. Value darf in 'overview' nicht "null" sein.
Meine neue Tabelle 'first_value' grefit für jedes Wertepaar den ersten vorkommenden Wert ab und
besitzt folglich 100 Zeilen.
group_id|person_id|value
--------------------------------
0|0|0
0|20|1
7|0|0
9|4|1
...
Diese Tabelle habe ich mittels folgenden Code erzeugt:
CREATE TABLE first_value AS (
SELECT a.group_id,
a.person_id,
min(a.value_id) AS value_id
FROM public.overview a
GROUP BY a.group_id, a.person_id
ORDER BY a.group_id, a.person_id, value_id);
Nun möchte ich eine Tabelle 'second_value' erstellen, welche ebenfalls über alle Kombinationen/Gruppieren, also 100 Zeilen verfügt. Gibt es für eine Gruppieren keinen zweiten Wert, so soll 'null' in die Datenbankzeile geschrieben werden.
Was ich möchte, wäre also eine Tabelle in der Form:
group_id|person_id|value
--------------------------------
0|0|1
0|20|2
7|0|null
9|4|2
...
Informationstechnisch gesehen:
Wenn der Wert min(a.value_id)+1 existiert, dann ist value=min(a.value_id)+1, ansonsten 'null'.
Meine Versuche brachten falsche Lösungen oder Error-Meldungen.
Entweder verschwanden alle Zeilen mit value = null, also:
group_id|person_id|value
--------------------------------
0|0|1
0|20|2
9|4|2
...
--> Keine 100 Zeilen bzw. Kombinationen/Gruppierungen wie gewollt
oder ein falscher Value wird berechnet, z. B.
group_id|person_id|value
--------------------------------
0|0|1
0|20|2
7|0|1
9|4|2
oder falsche Gruppierungen, z. B. wieder die Ursprungstabelle
group_id|person_id|value
-------------------------------
0|0|0
0|0|1
0|0|2
0|20|1
0|20|2
7|0|0
9|4|1
9|4|2
Habt ihr eine Idee?
Vielen Dank schonmal für eure Hilfe!
Matthias
ich habe eine DB-Tabelle 'overview' in folgendem Format:
group_id|person_id|value
-------------------------------
0|0|0
0|0|1
0|0|2
0|20|1
0|20|2
7|0|0
9|4|1
9|4|2
...
Das Werte-Paar (group_id, person_id) ist eindeutig und 100 Kombinationen/Gruppierungen kommen vor.
Der Wert von value liegt zwischen 0 und 4. Jede Kombination/Gruppierung hat mindestens einen Wert. Value darf in 'overview' nicht "null" sein.
Meine neue Tabelle 'first_value' grefit für jedes Wertepaar den ersten vorkommenden Wert ab und
besitzt folglich 100 Zeilen.
group_id|person_id|value
--------------------------------
0|0|0
0|20|1
7|0|0
9|4|1
...
Diese Tabelle habe ich mittels folgenden Code erzeugt:
CREATE TABLE first_value AS (
SELECT a.group_id,
a.person_id,
min(a.value_id) AS value_id
FROM public.overview a
GROUP BY a.group_id, a.person_id
ORDER BY a.group_id, a.person_id, value_id);
Nun möchte ich eine Tabelle 'second_value' erstellen, welche ebenfalls über alle Kombinationen/Gruppieren, also 100 Zeilen verfügt. Gibt es für eine Gruppieren keinen zweiten Wert, so soll 'null' in die Datenbankzeile geschrieben werden.
Was ich möchte, wäre also eine Tabelle in der Form:
group_id|person_id|value
--------------------------------
0|0|1
0|20|2
7|0|null
9|4|2
...
Informationstechnisch gesehen:
Wenn der Wert min(a.value_id)+1 existiert, dann ist value=min(a.value_id)+1, ansonsten 'null'.
Meine Versuche brachten falsche Lösungen oder Error-Meldungen.
Entweder verschwanden alle Zeilen mit value = null, also:
group_id|person_id|value
--------------------------------
0|0|1
0|20|2
9|4|2
...
--> Keine 100 Zeilen bzw. Kombinationen/Gruppierungen wie gewollt
oder ein falscher Value wird berechnet, z. B.
group_id|person_id|value
--------------------------------
0|0|1
0|20|2
7|0|1
9|4|2
oder falsche Gruppierungen, z. B. wieder die Ursprungstabelle
group_id|person_id|value
-------------------------------
0|0|0
0|0|1
0|0|2
0|20|1
0|20|2
7|0|0
9|4|1
9|4|2
Habt ihr eine Idee?
Vielen Dank schonmal für eure Hilfe!
Matthias