Top 10 Sql Avance

Le langage SQL (Structured Query Language) est un outil polyvalent permettant de gérer et d’interroger des données dans des bases de données relationnelles. Si les requêtes SQL de base sont essentielles, les requêtes SQL avancées permettent de passer à la vitesse supérieure en matière de manipulation et d’analyse des données. Dans ce guide, nous allons explorer les 10 principales requêtes SQL avancées avec des exemples de code pratiques.

1. CTE récursif (Common Table Expressions)

Requête : Récupérer tous les salariés et leurs responsables dans une structure hiérarchique à l’aide d’un CTE récursif.

WITH RECURSIVE EmployeeHierarchy AS (
  SELECT employee_id, employee_name, manager_id
  FROM employees
  WHERE manager_id IS NULL
  UNION ALL
  SELECT e.employee_id, e.employee_name, e.manager_id
  FROM employees e
  JOIN EmployeeHierarchy eh ON e.manager_id = eh.employee_id
)
SELECT * FROM EmployeeHierarchy;

2. Pivot Data

Requête : Pivote la table sales pour afficher les catégories de produits en colonnes et les ventes totales pour chaque mois.

SELECT *
FROM (
    SELECT TO_CHAR(order_date, 'YYYY-MM') AS month, product_category, sales_amount
    FROM sales
) AS pivoted
PIVOT (
    SUM(sales_amount)
    FOR product_category IN ('Electronics', 'Clothing', 'Books')
) AS pivoted_sales;

3. Fonctions Window

Requête : Calculer le total courant des ventes par date de commande.

SELECT order_date, sales_amount, SUM(sales_amount) OVER (ORDER BY order_date) AS running_total
FROM sales

4. Ranking avec des fonctions Window

Requête : Classer les employés en fonction de leur salaire au sein de chaque département.

SELECT department, employee_name, salary,
       RANK() OVER (PARTITION BY department ORDER BY salary DESC) AS salary_rank
FROM employees;

5. Trouver des lacunes dans les données séquentielles

Requête : Identifier les numéros d’ordre manquants dans une séquence.

WITH Sequences AS (
  SELECT MIN(order_number) AS start_seq, MAX(order_number) AS end_seq
  FROM orders
)
SELECT start_seq + 1 AS missing_sequence
FROM Sequences
WHERE NOT EXISTS (
  SELECT 1
  FROM orders o
  WHERE o.order_number = Sequences.start_seq + 1
)

6. Unpivot Data

Requête : Dissocier les données d’une table comportant plusieurs colonnes représentant différents attributs.

SELECT product_id, attribute_name, attribute_value
FROM products
UNPIVOT (
  attribute_value FOR attribute_name IN (color, size, weight)
) AS unpivoted_data;

7. Recherche d’événements consécutifs

Requête : Identifier les dates de commande consécutives pour un même produit

WITH ConsecutiveOrders AS (
  SELECT product_id, order_date,
         LAG(order_date) OVER (PARTITION BY product_id ORDER BY order_date) AS prev_order_date
  FROM orders
)
SELECT product_id, order_date, prev_order_date
FROM ConsecutiveOrders
WHERE order_date - prev_order_date = 1;

8. Agrégation avec la clause FILTER

Requête : Calculer le salaire moyen des employés du département des ventes.

SELECT department,
       AVG(salary) FILTER (WHERE department = 'Sales') AS avg_salary_sales
FROM employees
GROUP BY department

9. Extraction de données JSON

Requête : Extraire des données d’une colonne JSON.

SELECT order_id, customer_id,
       order_details ->> 'product' AS product_name,
       CAST(order_details ->> 'quantity' AS INTEGER) AS quantity
FROM orders;

10. Création et utilisation de tables temporaires

Requête : Créer une table temporaire pour stocker les résultats intermédiaires et la joindre à d’autres tables.

-- Créer une table temporaire
CREATE TEMPORARY TABLE temp_product_sales AS
SELECT product_id, SUM(sales_amount) AS total_sales
FROM sales
GROUP BY product_id;

-- Joindre d'autres tables
SELECT p.product_name, t.total_sales
FROM products p
JOIN temp_product_sales t ON p.product_id = t.product_id;

Conclusion

Les requêtes SQL avancées te permettent de t’attaquer à des tâches d’analyse de données complexes et de résoudre des problèmes de manipulation de données complexes. En maîtrisant ces requêtes, tu seras bien équipé pour traiter un large éventail de tâches liées aux données et prendre des décisions plus éclairées sur la base de tes données.

Au fur et à mesure que tu travailleras avec SQL et les bases de données relationnelles, la pratique et l’application régulières de ces requêtes avancées t’aideront à consolider ton expertise et à améliorer tes capacités d’analyse des données.

Fondamentaux SQL

Merci de ta lecture et de ton intérêt ! 🚀
Tu trouveras encore plus de contenu dans notre programme Bootcamp SQL 💫

Publications similaires

0 Commentaires
Le plus récent
Le plus ancien Le plus populaire
Commentaires en ligne
Afficher tous les commentaires