Count aber alle Daten behalten

Kazume

Benutzer
Beiträge
15
Hallo zusammen,


ich würde gerne etwas zusammen zählen lassen mit einem Group by allerdings auch alle anderen Daten abrufen.

Auftragsnummer 20004 kommt 4x vor
Auftragsnummer 20005 kommt 20x vor

diese Daten stehen jeweils der Anzahl enstprechend oft in der Datenbank.
Ich würde die Anzahl der Rows auch gerne beibehalten allerdings die Häufigkeit wie oft sie vorkommen zusätzlich im Select haben wollen.

Anzahl Auftragsnummer
4 20004
4 20004
4 20004
4 20004

hatte mehrfach ein Subselect ausprobiert z.B in der Form count(Auftragsnummer) group by Auftragsnummer
dann bekomme ich allerdings nur eine Row.

Hoffe es ist verständlich :p
 
Werbung:
Nah dran, aber doch vorbei ...

Code:
test=*# select * from kazume ;
 auftragsnummer |  t   
----------------+-----------------
  20004 | das ist zeile 1
  20004 | das ist zeile 2
  20004 | das ist zeile 3
  20004 | das ist zeile 4
  20004 | das ist zeile 5
  20008 | das ist zeile 1
  20008 | das ist zeile 2
  20008 | das ist zeile 3
  20009 | das ist zeile 1
  20009 | das ist zeile 2
  20009 | das ist zeile 3
  20009 | das ist zeile 4
(12 Zeilen)

test=*# select count(1) over (partition by auftragsnummer), * from kazume ;
 count | auftragsnummer |  t   
-------+----------------+-----------------
  5 |  20004 | das ist zeile 1
  5 |  20004 | das ist zeile 2
  5 |  20004 | das ist zeile 3
  5 |  20004 | das ist zeile 4
  5 |  20004 | das ist zeile 5
  3 |  20008 | das ist zeile 1
  3 |  20008 | das ist zeile 2
  3 |  20008 | das ist zeile 3
  4 |  20009 | das ist zeile 1
  4 |  20009 | das ist zeile 2
  4 |  20009 | das ist zeile 3
  4 |  20009 | das ist zeile 4
(12 Zeilen)

test=*#
 
Leider ist es MySQL also ohne over partition by


Ich liebe dich akretschmer du hilfst mir immer auf die Sprünge! :)

Lösung: ( SELECT COUNT(1) FROM s_order_details sol where sol.ordernumber = sod.ordernumber)

Bis auf count(1) hatte ich alle Variationen ausprobiert, das Count(1) war mir unbekannt.
Gleich mal schauen was es genau macht :D
 
Zuletzt bearbeitet:
Werbung:
In jedem Fall kann man das "zu Fuss" erledigen:
Code:
SELECT   t1.*,
     t2.anzahl
FROM   tabelle t1
LEFT JOIN (

SELECT   Auftragsnummer,
     count(*) AS anzahl
FROM   tabelle
GROUP BY Auftragsnummer

     ) t2
ON     t1.Auftragsnummer = t2.Auftragsnummer
 
Zurück
Oben