Rechnen mit SQL
Mit sql kann man auch prima (SQL)-Serverseitig rechnen. So kann Rechenpower auf den SQLServer verlagern und vor allem die Datenmenge die zurückgegeben wird verringern. Weiterhin kann dadurch die Komplexität des ausführenden Codes verringert werden. Angenommen wir haben eine Tabelle die Daten über kostenstellen (kst), Menge in kg von Produkt x und der Kg-Preis enthält. Die folgende Abfrage:
SELECT id, kst, menge, kg_preis, materialkosten, auftrag_id, lieferdatum FROM dbo.hlp_han_trockeneis_stats ORDER BY kst
liefert bspw. diese Ausgangsdatensätze.
181 2000 1400 5 7000 201012665 2010-06-26 00:00:00.000
203 2000 800 10 8000 201019020 2010-07-02 00:00:00.000
202 2001 800 5 4000 201018583 2010-06-17 00:00:00.000
145 2001 500 5 2500 201013950 2010-06-17 00:00:00.000
151 2003 800 5 4000 201019455 2010-07-01 00:00:00.000
156 2003 1200 5 6000 201017137 2010-06-19 00:00:00.000
187 2004 1200 5 6000 201010679 2010-07-05 00:00:00.000
127 2005 1500 5 7500 201019704 2010-06-24 00:00:00.000
Zählen der Datensätze zu einer kst.
SELECT kst, COUNT(*) AS cnt FROM hlp_han_trockeneis_stats GROUP BY kst
Die Summe der Spalte Menge pro Kostenstelle ermitteln.
SELECT kst, SUM (menge) AS sum_Menge FROM hlp_han_trockeneis_stats GROUP BY kst
Jetzt brauchen wir noch den Durchschnitt des KgPreises. Also die Summe des Kg-Preises durch die Anzahl der Datensätze pro kst.
SELECT kst, SUM(kg_preis) / Count(*) AS sum_kg_preis FROM hlp_han_trockeneis_stats GROUP BY kst
Und nun alles zusammen.
SELECT kst, COUNT(*) AS cnt, SUM(menge) AS sum_menge, SUM(kg_preis) / Count(*) AS sum_kg_preis, SUM(materialkosten) sum_material FROM dbo.hlp_han_trockeneis_stats GROUP BY kst
Erzeugt folgende Datensätze
2000 2 2200 7,5 15000
2001 2 1300 5 6500
2003 2 2000 5 10000
2004 1 1200 5 6000
2005 1 1500 5 7500
Posted in SQLTags: count, SQL, sum