Comment écrire ces deux requêtes pour un simple entrepôt de données, à l'aide de la norme ANSI SQL?

Je suis en train d'écrire un simple entrepôt de données qui va me permettre d'interroger la table pour observer périodique (disons hebdomadaire) des modifications dans les données, ainsi que des changements dans le changement des données (par exemple, une semaine à modifier dans l'hebdomadaire le montant de la vente).

Pour les fins de simplicité, je vais vous présenter très simplifié (presque banalisé) versions de les tables que je suis ici. Les ventes de la table de données est un point de vue et a la structure suivante:

CREATE TABLE sales_data (
     sales_time date NOT NULL,
     sales_amt double NOT NULL
)

Pour le but de cette question. J'ai laissé de côté d'autres champs que vous vous attendez à voir - comme product_id, sales_person_id etc, etc, car ils n'ont pas de pertinence directe à cette question. AFAICT, les seuls champs qui seront utilisés dans la requête sont les sales_time et la sales_amt champs (à moins que je me trompe).

J'ai aussi une table de dimension date avec la structure suivante:

CREATE TABLE date_dimension (
  id integer  NOT NULL,
  datestamp   date NOT NULL,
  day_part    integer NOT NULL,
  week_part   integer NOT NULL,
  month_part  integer NOT NULL,
  qtr_part    integer NOT NULL, 
  year_part   integer NOT NULL, 
);

qui partition des dates dans les rapports des plages.

J'ai besoin d'écrire des requêtes qui va me permettre de faire ce qui suit:

  1. Retour de la changement dans semaine sur semaine sales_amt pour une période déterminée. Par exemple, l'écart entre les ventes d'aujourd'hui et de vente N jours - où N est un entier positif (N == 7 dans ce cas).
  2. Retour de la changement dans le changement de sales_amt pour une période déterminée. Pour en (1). nous avons calculé la semaine sur semaine changement. Maintenant, nous voulons savoir comment le changement est différente de l'
    le (la semaine sur semaine) variation calculée la semaine dernière.

Je suis coincé toutefois, à ce stade, que SQL est mon plus faibles compétences. Je vous serais reconnaissant si un SQL maître peut expliquer comment je peux écrire ces requêtes dans une base de données de façon agnostique (c'est à dire à l'aide de la norme ANSI SQL).

Il serait utile si vous avez été à la poste détaillée de la disquette de réparation d'urgence. Votre table de faits semble un peu inhabituel. Qu'est ce qu'une ligne dans la table de faits? Une transaction ou une sorte de valeur cumulative? Supposons que nous vendons une barre de chocolat à 2 h pour 2$ et un autre à 3 h pour 2$ -- qu'est-ce que l'évolution du chiffre d'affaires de l'amt censé signifier?

OriginalL'auteur morpheous | 2010-05-26