Skip to end of metadata
Go to start of metadata

You are viewing an old version of this content. View the current version.

Compare with Current View Version History

« Previous Version 21 Current »

Auf dieser Seite wird die Standard SQL-View für die Statistik-Abfrage definiert.

Die Abfrage basiert auf der bei Kunden üblich eingesetzten Pivot-View. Es werden aber Fremdschlüssel ausgegeben.

 Content


Anforderungen

Die Anforderungen an statistische Daten sind für den Aussendienst sehr zentral. Im MVP des Aussendienstportals sind verschiedene Perspektiven auf statistische Daten vorgehesen. Diese werden nachfolgend beschrieben.

PerspektiveKontextBeschreibungDatenbasis
Performance-IndikatorKunden-DashboardMonatliche Umsatzentwicklung mit Vorjahresvergleich des ausgewählten KundenSQLView_vf_performanceindicator
TopsellersKunden-DashboardTop 5 Artikel gemäss UmsatzSQLView_vf_topsellers
BezügeDetailansicht

Alle bezogenen Artikel des ausgewählten Kunden verdichtet pro Artikel. Zeitraum wählbar nach 30, 90, 180, 365 und 720 Tagen oder benutzerdefinierter Zeitraum

DrilldownFunktion auf einzelne Bewegung wünschenswert nicht möglich aus Performance-Gründen

SQLView_vf_sales

Performance Indikator und Topseller sind auch denkbar für System-Dashboard

Performance-Indikator

  • Auf dem System-Dashboard sieht der Aussendienst seine Umsatzentwicklung der letzten 12 Monate pro Monat mit Vorjahresvergleich über all seine Kunden
  • Auf dem Kunden-Dashboard sieht der Aussendienst seine Umsatzentwicklung der letzten 12 Monate pro Monat mit Vorjahresvergleich für den spezifischen Kunden
  • Monate ohne Umsatz sollen erscheinen ohne Umsatzbalken

Verworfen in Phase 1

  • Ein Filter auf der Statistik, mit welchem man zum Beispiel nach Artikeltyp selektionieren kann
  • Ein Auswahlmöglichen, mit welchem man andere Daten anstelle des Umsatzes anzeigen kann (z.B. Menge, Liter, Deckungsbeitrag)

Mockup Performance Indikator

Field Mapping Performance-Indikator

SELECT DISTINCT

View_fieldEntity.attributetypeDescriptionDEFRITEN
AddressIdBewegung.Bew_AdresseIDforeign keyID der Adresse



Delivery_month
vf_performanceindicator.DeliveryMonth
MONTH( Bewegung.Bew_Datum )

Monat vom LieferdatumMonatMoisMeseMonth
Delivery_year
vf_performanceindicator.DeliveryYear
YEAR( Bewegung.Bew_Datum )

Jahr vom LieferdatumJahrAnnéeAnnoYear
Quantity
vf_topsellers.quantity
SUM (IF (Bewegung.Bew_Anrechenbar IN (0,3)) THEN (IsNull(Bewegung.Bew_Menge,0)) ELSE 0 ENDIF)

Summe der MengenMengeQuantitéQuantitàQuantity
Selling_amount
vf_topsellers.selling_amount
SUM (IF (Bewegung.Bew_Anrechenbar IN (0,2)) THEN (IsNull(Bewegung.Bew_NettoErloes,Bewegung.Bew_Menge * Bewegung.Bew_Preis)) ELSE 0 ENDIF)

Summe des NettoerlösesUmsatzChiffre d'affairesFatturatoTurnover

Filter


DBViewValue
whereBewegung.Bew_VorgangProcess-2
andBewegung.Bew_AdresseIDAddressIdis not null
andBewegung.Bew_GegenBewegungId-is null
andBewegung.Bew_Datum
>= CURRENT DATE - 730

Group by Klausel

AddressId
DeliveryMonth
DeliveryYear

Order by Klausel

Selling_amount

Topsellers

  • Auf dem System-Dashboard sieht der Aussendiest die 10 Topseller aller seiner Kunden.
  • Auf dem Kunden-Dashboard sieht der Aussendienst die 5 Topseller des entsprechenden Kunden

Mockup Topsellers

Field Mapping Topsellers

SELECT DISTINCT

View_fieldEntity.attributetypeDescriptionDEFRITEN
ArticleIdBewegung.Bew_ArtikelIDforeign keyID des Artikels



AddressIdBewegung.Bew_AdresseIDforeign keyID der Adresse



Quantity
vf_topsellers.quantity
SUM (IF (Bewegung.Bew_Anrechenbar IN (0,3)) THEN (IsNull(Bewegung.Bew_Menge,0)) ELSE 0 ENDIF)

Summe der MengenMengeQuantitéQuantitàQuantity
Selling_amount
vf_topsellers.selling_amount
SUM (IF (Bewegung.Bew_Anrechenbar IN (0,2)) THEN (IsNull(Bewegung.Bew_NettoErloes,Bewegung.Bew_Menge * Bewegung.Bew_Preis)) ELSE 0 ENDIF)

Summe des NettoerlösesUmsatzChiffre d'affairesFatturatoTurnover

Filter


DBViewValue
whereBewegung.Bew_VorgangProcess-2
andBewegung.Bew_AdresseIDAddressIdis not null
andBewegung.Bew_GegenBewegungId-is null
andBewegung.Bew_Datum
>= CURRENT DATE - 365

Group by Klausel

ArticleId
AddressId

Order by Klausel

Selling_amount

Bezüge

Mockup Bezüge


Field Mapping Bezüge

View_fieldEntity.attributetypeDescriptionDEFRITEN
ArticleIdBewegung.Bew_ArtikelIDforeign keyID des Artikels



AddressIdBewegung.Bew_AdresseIDforeign keyID der Adresse



ArticleNameArtikel.Art_BezeichnungstringArtikel BezeichnungBezeichnungDescription
Description

Vintage

Artikel.Art_JahrgangintegerJahrgangJahrgangMillésime
Vintage
VolumeArtikel.Art_VolumenintegerVolumenVolumenDegré d'alcool
Volume
FillingAbfuellung.Abf_Kuerzelstring,20AbfüllungAbfüllungCondionnement
Filling
PackagingGrossgebinde.Gross_Kuerzelstring,20GrossgebindeGrossgebindeEmballage
Packaging
ArticleCategoryArtikelkategorie.ArtKat_Bezeichnungstring,40ArtikelkategorieArtikelkategorieCatégorie d'article
Article Category
ArticleTypeArtikelkategorie.ArtKat_TypBezeichnungstring,30ArtikeltypArtikeltypType d'article
Article Type
ManufacturerProduzent.Prod_Bezeichnungstring,50ProduzentProduzentProducteur
Producer
RegionRegion.Reg_Bezeichnungstring,40RegionRegionRégion
Region
CountryLand.Land_Bezeichnungstring,40LandLandPays
Country
ProductCycleZyklus.Zyk_Bezeichnungstring.,40ProduktzyklusProduktzyklusCycle du produit
Product cycle
AddressSurnameAdresse.Adr_Namestring,50NameNameNom
Surname
AddressNameAdresse.Adr_Vornamestring,25VornameVornamePrénom
Name
AddressAddAdresse.Adr_Zusatz1string,30Zusatz 1Zusatz 1Additiv au nom 1
Additional Name 1
AddressZIPAdresse.Adr_PLZstring,10PLZPLZNPA
ZIP
AddressPlaceAdresse.Adr_Ortstring,30OrtOrtLieu
Place
AddressCategoryKundenkategorie.KundKat_Bezeichnungstring,40KundenkategorieKundenkategorieCatégorie de clients
Customer category
PriceGroupKundengruppePreis.KundPreis_Bezeichnungstring,40PreisgruppePreisgruppeGroupe de prix
Price groupe
EnterpriseKonzern.Konz_Bezeichnungstring,40Kette / KonzernKette / KonzernChaîne / groupe
Chain / Enterprise
Quantity_unit_30
Quantity_unit_30
SELECT SUM ( Bewegung.Bew_Menge ) 
  FROM VinX.Bewegung 
 WHERE Bewegung.Bew_Datum >= ( CURRENT DATE - 30 ) 
   AND Bewegung.Bew_ArtikelID = ArticleId 
   AND Bewegung.Bew_AdresseID = AddressId 
   AND Bewegung.Bew_Vorgang = (0-2) 
   AND Bewegung.Bew_Anrechenbar IN (0,3) 
   AND IsNull(Bewegung.Bew_GegenBewegungID,0) = 0
numericMenge Stück/Flasche letzte 30 TageMenge AbfüllungQuantité ConditionnementQuantità ImbottigliamentoQuantity Filling
Quantity_unit_90
Quantity_unit_90
SELECT SUM ( Bewegung.Bew_Menge ) 
  FROM VinX.Bewegung 
 WHERE Bewegung.Bew_Datum >= ( CURRENT DATE - 90 ) 
   AND Bewegung.Bew_ArtikelID = ArticleId 
   AND Bewegung.Bew_AdresseID = AddressId 
   AND Bewegung.Bew_Vorgang = (0-2) 
   AND Bewegung.Bew_Anrechenbar IN (0,3) 
   AND IsNull(Bewegung.Bew_GegenBewegungID,0) = 0

Menge Stück/Flasche letzte 90 TageMenge AbfüllungQuantité ConditionnementQuantità ImbottigliamentoQuantity Filling
Quantity_unit_180
Quantity_unit_180
SELECT SUM ( Bewegung.Bew_Menge ) 
  FROM VinX.Bewegung 
 WHERE Bewegung.Bew_Datum >= ( CURRENT DATE - 180 ) 
   AND Bewegung.Bew_ArtikelID = ArticleId 
   AND Bewegung.Bew_AdresseID = AddressId 
   AND Bewegung.Bew_Vorgang = (0-2) 
   AND Bewegung.Bew_Anrechenbar IN (0,3) 
   AND IsNull(Bewegung.Bew_GegenBewegungID,0) = 0

Menge Stück/Flasche letzte 180 TageMenge AbfüllungQuantité ConditionnementQuantità ImbottigliamentoQuantity Filling
Quantity_unit_365
Quantity_unit_365
SELECT SUM ( Bewegung.Bew_Menge ) 
  FROM VinX.Bewegung 
 WHERE Bewegung.Bew_Datum >= ( CURRENT DATE - 365 ) 
   AND Bewegung.Bew_ArtikelID = ArticleId 
   AND Bewegung.Bew_AdresseID = AddressId 
   AND Bewegung.Bew_Vorgang = (0-2) 
   AND Bewegung.Bew_Anrechenbar IN (0,3) 
   AND IsNull(Bewegung.Bew_GegenBewegungID,0) = 0

Menge Stück/Flasche letzte 365 TageMenge AbfüllungQuantité ConditionnementQuantità ImbottigliamentoQuantity Filling
Quantity_unit_730
Quantity_unit_730
SELECT SUM ( Bewegung.Bew_Menge ) 
  FROM VinX.Bewegung 
 WHERE Bewegung.Bew_Datum >= ( CURRENT DATE - 730 ) 
   AND Bewegung.Bew_ArtikelID = ArticleId 
   AND Bewegung.Bew_AdresseID = AddressId 
   AND Bewegung.Bew_Vorgang = (0-2) 
   AND Bewegung.Bew_Anrechenbar IN (0,3) 
   AND IsNull(Bewegung.Bew_GegenBewegungID,0) = 0

Menge Stück/Flasche letzte 730 TageMenge AbfüllungQuantité ConditionnementQuantità ImbottigliamentoQuantity Filling
Selling_amount_30
Selling_amount_30
SELECT SUM ( Bewegung.Bew_Nettoerloes ) 
  FROM VinX.Bewegung 
 WHERE Bewegung.Bew_Datum >= ( CURRENT DATE - 30 ) 
   AND Bewegung.Bew_ArtikelID = ArticleId 
   AND Bewegung.Bew_AdresseID = AddressId 
   AND Bewegung.Bew_Vorgang = (0-2) 
   AND Bewegung.Bew_Anrechenbar IN (0,2) 
   AND IsNull(Bewegung.Bew_GegenBewegungID,0) = 0
numericGesamtbetrag Verkauf letzte 30 TageUmsatzChiffre d'affairesFatturatoTurnover
Selling_amount_90
Selling_amount_90
SELECT SUM ( Bewegung.Bew_Nettoerloes ) 
  FROM VinX.Bewegung 
 WHERE Bewegung.Bew_Datum >= ( CURRENT DATE - 90 ) 
   AND Bewegung.Bew_ArtikelID = ArticleId 
   AND Bewegung.Bew_AdresseID = AddressId 
   AND Bewegung.Bew_Vorgang = (0-2) 
   AND Bewegung.Bew_Anrechenbar IN (0,2) 
   AND IsNull(Bewegung.Bew_GegenBewegungID,0) = 0
numericGesamtbetrag Verkauf letzte 90 TageUmsatzChiffre d'affairesFatturatoTurnover
Selling_amount_180
Selling_amount_180
SELECT SUM ( Bewegung.Bew_Nettoerloes ) 
  FROM VinX.Bewegung 
 WHERE Bewegung.Bew_Datum >= ( CURRENT DATE - 180 ) 
   AND Bewegung.Bew_ArtikelID = ArticleId 
   AND Bewegung.Bew_AdresseID = AddressId 
   AND Bewegung.Bew_Vorgang = (0-2) 
   AND Bewegung.Bew_Anrechenbar IN (0,2) 
   AND IsNull(Bewegung.Bew_GegenBewegungID,0) = 0
numericGesamtbetrag Verkauf letzte 180 TageUmsatzChiffre d'affairesFatturatoTurnover
Selling_amount_365
Selling_amount_365
SELECT SUM ( Bewegung.Bew_Nettoerloes ) 
  FROM VinX.Bewegung 
 WHERE Bewegung.Bew_Datum >= ( CURRENT DATE - 365 ) 
   AND Bewegung.Bew_ArtikelID = ArticleId 
   AND Bewegung.Bew_AdresseID = AddressId 
   AND Bewegung.Bew_Vorgang = (0-2) 
   AND Bewegung.Bew_Anrechenbar IN (0,2) 
   AND IsNull(Bewegung.Bew_GegenBewegungID,0) = 0
numericGesamtbetrag Verkauf letzte 365 TageUmsatzChiffre d'affairesFatturatoTurnover
Selling_amount_730
Selling_amount_730
SELECT SUM ( Bewegung.Bew_Nettoerloes ) 
  FROM VinX.Bewegung 
 WHERE Bewegung.Bew_Datum >= ( CURRENT DATE - 730 ) 
   AND Bewegung.Bew_ArtikelID = ArticleId 
   AND Bewegung.Bew_AdresseID = AddressId 
   AND Bewegung.Bew_Vorgang = (0-2) 
   AND Bewegung.Bew_Anrechenbar IN (0,2) 
   AND IsNull(Bewegung.Bew_GegenBewegungID,0) = 0
numericGesamtbetrag Verkauf letzte 730 TageUmsatzChiffre d'affairesFatturatoTurnover
Purchase_value_30
Purchase_value_30
SELECT SUM ( Bewegung.Bew_Menge * Bewegung.Bew_Einstandspreis ) 
  FROM VinX.Bewegung 
 WHERE Bewegung.Bew_Datum >= ( CURRENT DATE - 30 ) 
   AND Bewegung.Bew_ArtikelID = ArticleId 
   AND Bewegung.Bew_AdresseID = AddressId 
   AND Bewegung.Bew_Vorgang = (0-2) 
   AND Bewegung.Bew_Anrechenbar IN (0,2,3) 
   AND IsNull(Bewegung.Bew_GegenBewegungID,0) = 0

numeric

Einkaufswert letzte 30 Tage


EinkaufswertValeur d'achatValore di acquistoPurchase value
Purchase_value_90
Purchase_value_90
SELECT SUM ( Bewegung.Bew_Menge * Bewegung.Bew_Einstandspreis ) 
  FROM VinX.Bewegung 
 WHERE Bewegung.Bew_Datum >= ( CURRENT DATE - 90 ) 
   AND Bewegung.Bew_ArtikelID = ArticleId 
   AND Bewegung.Bew_AdresseID = AddressId 
   AND Bewegung.Bew_Vorgang = (0-2) 
   AND Bewegung.Bew_Anrechenbar IN (0,2,3) 
   AND IsNull(Bewegung.Bew_GegenBewegungID,0) = 0
numeric

Einkaufswert letzte 90 Tage


EinkaufswertValeur d'achatValore di acquistoPurchase value
Purchase_value_180
Purchase_value_180
SELECT SUM ( Bewegung.Bew_Menge * Bewegung.Bew_Einstandspreis ) 
  FROM VinX.Bewegung 
 WHERE Bewegung.Bew_Datum >= ( CURRENT DATE - 180 ) 
   AND Bewegung.Bew_ArtikelID = ArticleId 
   AND Bewegung.Bew_AdresseID = AddressId 
   AND Bewegung.Bew_Vorgang = (0-2) 
   AND Bewegung.Bew_Anrechenbar IN (0,2,3) 
   AND IsNull(Bewegung.Bew_GegenBewegungID,0) = 0
numeric

Einkaufswert letzte 180 Tage


EinkaufswertValeur d'achatValore di acquistoPurchase value
Purchase_value_365
Purchase_value_365
SELECT SUM ( Bewegung.Bew_Menge * Bewegung.Bew_Einstandspreis ) 
  FROM VinX.Bewegung 
 WHERE Bewegung.Bew_Datum >= ( CURRENT DATE - 365 ) 
   AND Bewegung.Bew_ArtikelID = ArticleId 
   AND Bewegung.Bew_AdresseID = AddressId 
   AND Bewegung.Bew_Vorgang = (0-2) 
   AND Bewegung.Bew_Anrechenbar IN (0,2,3) 
   AND IsNull(Bewegung.Bew_GegenBewegungID,0) = 0
numeric

Einkaufswert letzte 365 Tage


EinkaufswertValeur d'achatValore di acquistoPurchase value
Purchase_value_730
Purchase_value_720
SELECT SUM ( Bewegung.Bew_Menge * Bewegung.Bew_Einstandspreis ) 
  FROM VinX.Bewegung 
 WHERE Bewegung.Bew_Datum >= ( CURRENT DATE - 730 ) 
   AND Bewegung.Bew_ArtikelID = ArticleId 
   AND Bewegung.Bew_AdresseID = AddressId 
   AND Bewegung.Bew_Vorgang = (0-2) 
   AND Bewegung.Bew_Anrechenbar IN (0,2,3) 
   AND IsNull(Bewegung.Bew_GegenBewegungID,0) = 0
numeric

Einkaufswert letzte 730 Tage


EinkaufswertValeur d'achatValore di acquistoPurchase value

Profit_margin_30

Profit_margin_90

Profit_margin_180

Profit_margin_365

Profit_margin_730

vf_statistics.Profit_margin
Profit_margin_30  = Selling_amount_30  - Purchase_value_30, 
Profit_margin_90  = Selling_amount_90  - Purchase_value_90, 
Profit_margin_180 = Selling_amount_180 - Purchase_value_180,
Profit_margin_365 = Selling_amount_365 - Purchase_value_365,
Profit_margin_730 = Selling_amount_730 - Purchase_value_730,
numeric

Deckungsbeitrag / Marge des Verkaufs in CHF

letzte 30 Tage

letzte 90 Tage

letzte 180 Tage

letzte 365 Tage

letzte 730 Tage


DB in CHFMarge en CHFMargine in CHFMargin in CHF

Profit_margin_percentage_30

Profit_margin_percentage_90

Profit_margin_percentage_180

Profit_margin_percentage_365

Profit_margin_percentage_730



vf_statistics.Profit_margin_percentage
Profit_margin_percentage_30=(IF (Selling_amount_30 <> 0) THEN (Profit_margin_30 / Selling_amount_30 ) ELSE 0 ENDIF),
Profit_margin_percentage_90=(IF (Selling_amount_90 <> 0) THEN (Profit_margin_90 / Selling_amount_90 ) ELSE 0 ENDIF),
Profit_margin_percentage_180=(IF (Selling_amount_180 <> 0) THEN (Profit_margin_180 / Selling_amount_180 ) ELSE 0 ENDIF),
Profit_margin_percentage_365=(IF (Selling_amount_365 <> 0) THEN (Profit_margin_365 / Selling_amount_365 ) ELSE 0 ENDIF),
Profit_margin_percentage_730=(IF (Selling_amount_730 <> 0) THEN (Profit_margin_730 / Selling_amount_730 ) ELSE 0 ENDIF)
numeric

Deckungsbeitrag / Marge des Verkaufs in Prozent %

letzte 30 Tage

letzte 90 Tage

letzte 180 Tage

letzte 365 Tage

letzte 730 Tage

DB in %Marge en %Margin in %Margin in %

Filter


DBViewValue
whereBewegung.Bew_VorgangProcess-2
andBewegung.Bew_AdresseIDAddressIdis not null
andBewegung.Bew_GegenBewegungId-is null
andBewegung.Bew_Datum
CURRENT DATE - 730

Group by

ArticleId
AddressId

Order by

AddressId ASC
ArticleId ASC

Anhang

Modellerweiterung ViewVinX_mfstatitics mit Definition für View vf_statistics

  • No labels