CommencerCommencez gratuitement

Pivoter les revenus utilisateurs par mois

Eve vous indique ensuite que les cadres dirigeants préfèrent les tables « larges » aux tables « longues », car elles se parcourent plus facilement. Elle a préparé un exemple de rapport des revenus par utilisateur et par mois, détaillant les revenus des 5 premiers identifiants d’utilisateur de juin à août 2018. Les dirigeants lui ont demandé de pivoter la table par mois. Elle vous confie cette tâche.

Pivotez la requête des revenus utilisateurs par mois de sorte que l’identifiant d’utilisateur soit une ligne et que chaque mois de juin à août 2018 soit une colonne.

Cet exercice fait partie du cours

<cours>Analyser des données métier en SQL</cours>
Voir le cours

Instructions de l’exercice

  • Activez CROSSTAB() depuis tablefunc.
  • Déclarez les colonnes de la nouvelle table pivot : l’identifiant d’utilisateur et les trois premiers mois d’activité.

Exercice interactif pratique

Essayez cet exercice en complétant ce code d’exemple.

-- Import tablefunc
CREATE EXTENSION IF NOT EXISTS ___;

SELECT * FROM CROSSTAB($$
  SELECT
    user_id,
    DATE_TRUNC('month', order_date) :: DATE AS delivr_month,
    SUM(meal_price * order_quantity) :: FLOAT AS revenue
  FROM meals
  JOIN orders ON meals.meal_id = orders.meal_id
 WHERE user_id IN (0, 1, 2, 3, 4)
   AND order_date < '2018-09-01'
 GROUP BY user_id, delivr_month
 ORDER BY user_id, delivr_month;
$$)
-- Select user ID and the months from June to August 2018
AS ct (___ INT,
       ___ FLOAT,
       ___ FLOAT,
       ___ FLOAT)
ORDER BY user_id ASC;
Modifier et exécuter le code