“J’ai écrit un traitement en SQL et je voudrai voir ce que cela donne mais sans tout afficher car j’ai des centaines de milliers de lignes en résultat. Je fais comment ?”
La pagination
Certains systèmes de gestion de bases de données font de la pagination. C’est à dire qu’il découpe le résultat en plusieurs lots appelés pages.
C’est pratique pour éviter de surcharger sa mémoire vive qui va devoir encaisser l’affichage.
L’export et le tableur
De plus, si on souhaite faire un export en csv ou en tableur (ouai bon ça m’arrive…) afin de manipuler plus simplement les données qu’en SQL, cela peut devenir volumineux.
Par exemple, cela m’arrive de faire des export BigQuery en Google Sheet pour faire des comparaisons, des filtrers, des tableaux croisés dynamique, ajouter des formules etc.
J’ai commencé dans la data avec Excel, ça laisse des traces 😅.
Mais si l’export fait plusieurs centaines de milliers de lignes, Google Sheets ne va pas aimer.
Pourtant je voudrai avoir un échantillon des données.
C’est à ce moment que peut être utile la clause LIMIT.
La clause LIMIT
La clause LIMIT est utilisée à la fin du code SQL avant le point-virgule (si vous l’utilisez) et permet de dire le nombre de lignes que l’on souhaite afficher en sortie.
WITH cte_sales AS (
SELECT '001' AS site, "ProduitA" AS product, 1000 AS turnover UNION ALL
SELECT '001', 'produitB', 1500 UNION ALL
SELECT '001', 'produitC', 1200 UNION ALL
SELECT '002', 'produitA', 800 UNION ALL
SELECT '002', 'produitB', 950 UNION ALL
SELECT '002', 'produitC', 1100 UNION ALL
SELECT '003', 'produitA', 1300 UNION ALL
SELECT '003', 'produitB', 1300 UNION ALL
SELECT '003', 'produitC', 900 UNION ALL
SELECT '004', 'produitA', 1600 UNION ALL
SELECT '004', 'produitB', 1400 UNION ALL
SELECT '004', 'produitC', 1350
)
SELECT
site,
product
FROM cte_sales
LIMIT 4; -- Seules 4 lignes seront affichées
Voici le résultat :
site | product |
1 | ProduitA |
1 | produitB |
1 | produitC |
2 | produitA |
✅ Il n’y a bien que 4 lignes d’affichées en sortie.
Ces lignes correspondent au 4 premiers SELECT de la clause WITH.
La clause OFFSET
☝️ On peut aussi utiliser LIMIT avec une clause : OFFSET.
Cette clause permet de faire un décalage dans l’affichage. C’est-à-dire, on veut afficher 4 lignes mais seulement à partir de la troisième ligne.
WITH cte_sales AS (
SELECT '001' AS site, "ProduitA" AS product, 1000 AS turnover UNION ALL
SELECT '001', 'produitB', 1500 UNION ALL
SELECT '001', 'produitC', 1200 UNION ALL
SELECT '002', 'produitA', 800 UNION ALL
SELECT '002', 'produitB', 950 UNION ALL
SELECT '002', 'produitC', 1100 UNION ALL
SELECT '003', 'produitA', 1300 UNION ALL
SELECT '003', 'produitB', 1300 UNION ALL
SELECT '003', 'produitC', 900 UNION ALL
SELECT '004', 'produitA', 1600 UNION ALL
SELECT '004', 'produitB', 1400 UNION ALL
SELECT '004', 'produitC', 1350
)
SELECT
site,
product
FROM cte_sales
LIMIT 4 OFFSET 3; -- Après la troisième ligne, affiche 4 lignes.
Voici le résultat :
site | product |
2 | produitA |
2 | produitB |
2 | produitC |
3 | produitA |
On voit que la première des 4 lignes affichées, correspond à la ligne juste après la 3ème.
Merci de votre lecture !