Neu Durchschnittlicher Warenkorb unter VERKAUF

cdx

Sehr aktives Mitglied
13. März 2013
1.601
54
Hallo.
Kann mir bitte jemand weiter helfen?
Ich würde mir gern im Bereich Verkauf eine Übersicht einbauen die mir den durchschnittlichen Auftragswert von Bestellungen anzeigt.
Allerdings nicht nur für den selektierten Auftrag sondern allgemein.

Letztendlich ist es ja nur Gesamtsumme der Aufträge durch Anzahl. Aber ich finde allein die Gesamtsumme der Bestellungen schon nicht in der Datenbank. :(
 

DasPatte

Aktives Mitglied
16. Mai 2018
46
14
Ich denke mal, dass wird es wohl sein.
Die Zeiträume bestimmst du über die Variablen.

SQL:
DECLARE @Tage1 as int,@Tage2 as int,@Tage3 as int
/* --- Hier den Zeitraum bestimmen --- */
SET @Tage1 = 30
SET @Tage2 = 14
SET @Tage3 = 7

SELECT @Tage1 as Tage,
    (SELECT CAST(avg(TotalGrossPrice) as decimal(5,2)) FROM Report.SalesOrder WHERE DATEDIFF(D,CreationDate,GETDATE()) <= @Tage1) as 'Warenkorbwert',
    (SELECT COUNT(InternalId) FROM Report.SalesOrder WHERE DATEDIFF(D,CreationDate,GETDATE()) <= @Tage1) as 'Anzahl Bestellungen'
UNION
SELECT @Tage2 as Tage,
    (SELECT CAST(avg(TotalGrossPrice) as decimal(5,2)) FROM Report.SalesOrder WHERE DATEDIFF(D,CreationDate,GETDATE()) <= @Tage2) as 'Warenkorbwert',
    (SELECT COUNT(InternalId) FROM Report.SalesOrder WHERE DATEDIFF(D,CreationDate,GETDATE()) <= @Tage2) as 'Anzahl Bestellungen'
UNION
SELECT @Tage3 as Tage,
    (SELECT CAST(avg(TotalGrossPrice) as decimal(5,2)) FROM Report.SalesOrder WHERE DATEDIFF(D,CreationDate,GETDATE()) <= @Tage3) as 'Warenkorbwert',
    (SELECT COUNT(InternalId) FROM Report.SalesOrder WHERE DATEDIFF(D,CreationDate,GETDATE()) <= @Tage3) as 'Anzahl Bestellungen'

Ach so, damit es angezeigt wird, musst du einfach irgendeinen Auftrag in der Liste auswählen.

Gruß, Patrick
 

cdx

Sehr aktives Mitglied
13. März 2013
1.601
54
Mega!!! Vielen Dank.
Wenn ich nun alles haben möchte könnte ich jetzt eine sehr große Zahl eintragen wie 10.000.
Geht das auch eleganter?
Dann hätte ich bspw 7 Tage, 30 Tage und Gesamt.
 

DasPatte

Aktives Mitglied
16. Mai 2018
46
14
Naja, nimm 0 als wert für @Tage3 und Dreh das < in ein > in den letzten beiden Zeilen.
Oder du nimmst halt alles ab WHERE raus...
Aber: Das ist nicht ohne, die Abfrage. Je nachdem wie häufig du die Tabelle tatsächlich brauchst, würde ich es entweder in /* ...*/ einschließen und nur bei Bedarf ausführen, oder du legst noch ein leeres Feld als 2.Eigene Übersicht an, wo nichts drin steht. Dann läuft die Abfrage nicht so oft „unnütz“.

Gruss, Patrick
 

NewBuy

Sehr aktives Mitglied
29. August 2016
2.102
316
Hi,
finde ich Super was Du da gemacht hast.
Kann man Di Abfrage auch auf ein bestimmten Zeitraum eingenzen Beispiel vom 01.01.2021 - 31.01.2021?

Grüße Uwe
 

DasPatte

Aktives Mitglied
16. Mai 2018
46
14
Auch das geht.

zu ändern ist dann wieder ab WHERE:
Creationdate BETWEEN('2021-01-01 00:00‘,'2021-01-31‘)

Gruß, Patrick
 

DasPatte

Aktives Mitglied
16. Mai 2018
46
14
Okay sorry, hast Recht., Ist etwas unübersichtlich so zerfetzt...

Code:
DECLARE @Tage1 as int,@Tage2 as int,@Tage3 as int
/* --- Hier den Zeitraum bestimmen --- */
SET @Tage1 = 30
SET @Tage2 = 14
SET @Tage3 = 7

SELECT @Tage1 as Tage,
    (SELECT CAST(avg(TotalGrossPrice) as decimal(5,2)) FROM Report.SalesOrder WHERE (CreationDate >='01/01/2021') AND (CreationDate <='31/01/2021')) as 'Warenkorbwert',
    (SELECT COUNT(InternalId) FROM Report.SalesOrder WHERE (CreationDate >='01/01/2021') AND (CreationDate <='31/01/2021')) as 'Anzahl Bestellungen'
 
  • Gefällt mir
Reaktionen: NewBuy