Benötige Hilfe beim zählen von Ids in einer Spalte

siodsiod

Neuer Benutzer
Beiträge
2
Hallo,

leider komme ich irgendwie nicht weiter, stehe auf dem Schlauch.

Ich habe folgende Tabelle

SELECT ID, IDx
FROM Table1

IDIDx
13
24
33
43

Nun möchte ich eine weitere Spalte hinzufügen mit der Anzahl der IDx, also von der 3 sind 3 vorhanden, von der 4 eine.

SELECT ID, IDx, ??? AS 'Anzahl IDx'
FROM Table1

IDIDxAnzahl IDx
133
241
333
433

mit GROUP BY hat es nicht funktioniert, wirft einen Fehler.

Ich hoffe ihr könnt mich unterstützen, vielen Dank schon mal!
 
Werbung:
dumme idee, wenn sich die Tabelle ändert mußt Du alle Daten neu berechnen. Mach das im Select oder baue Dir eine View:

Code:
postgres=# select * from siodsiod ;
 id | idx 
----+-----
  1 |   3
  2 |   4
  3 |   3
  4 |   3
(4 rows)

postgres=# with tmp as (select idx, count(*) from siodsiod group by idx) select s.id, s.idx, count from siodsiod s left join tmp on s.idx=tmp.idx;
 id | idx | count 
----+-----+-------
  1 |   3 |     3
  2 |   4 |     1
  3 |   3 |     3
  4 |   3 |     3
(4 rows)

postgres=# create view view_siodsiod as (with tmp as (select idx, count(*) from siodsiod group by idx) select s.id, s.idx, count from siodsiod s left join tmp on s.idx=tmp.idx);
CREATE VIEW
postgres=# select * from view_siodsiod ;
 id | idx | count 
----+-----+-------
  1 |   3 |     3
  2 |   4 |     1
  3 |   3 |     3
  4 |   3 |     3
(4 rows)

postgres=#
 
Werbung:
ich habe nicht gesagt, es sei schwer. Es ist nur Bullshit. Aber wenn Du so erpicht darauf aus bist durch Schmerz zu lernen, bitte:

Code:
postgres=# alter table siodsiod add column anzahl int;
ALTER TABLE
postgres=# begin;
BEGIN
postgres=*# with tmp as (select idx, count(*) from siodsiod group by idx) update siodsiod set anzahl = tmp.count from tmp where siodsiod.idx=tmp.idx;
UPDATE 4
postgres=*# select * from siodsiod;
 id | idx | anzahl 
----+-----+--------
  1 |   3 |      3
  2 |   4 |      1
  3 |   3 |      3
  4 |   3 |      3
(4 rows)

postgres=*#
 
Zurück
Oben