Date de sortie
April 30, 2024
Auteur
Bertrand Fabre
Comment faites-vous si vous avez besoin de 23 colonnes sur les 24 dont est composée votre table de travail ?
Sur BigQuery, car je n’ai pas vérifié sur d’autres, il existe la clause EXCEPT() à utiliser dans le SELECT.
Tout d’abord, prenons des données d’exemple :
WITH product AS (
SELECT 1 AS ProductID, 'Laptop' AS ProductName, 'Electronics' AS Category, 'HP' AS Brand, 1200 AS Price, '2023-01-01' AS ReleaseDate, 'Yes' AS InStock, 15 AS DiscountPercent, 'Black' AS Color, 1.5 AS WeightKg UNION ALL
SELECT 2, 'Smartphone', 'Electronics', 'Apple', 999, '2023-03-15', 'Yes', 10, 'Silver', 0.2 UNION ALL
SELECT 3, 'Backpack', 'Accessories', 'Nike', 70, '2022-08-01', 'No', 5, 'Blue', 0.7 UNION ALL
SELECT 4, 'Water Bottle', 'Accessories', 'CamelBak', 35, '2023-04-20', 'Yes', 0, 'Green', 0.3 UNION ALL
SELECT 5, 'Headphones', 'Electronics', 'Sony', 150, '2022-12-05', 'Yes', 20, 'Black', 0.4
)
SELECT *
FROM product
;
En voici le résultat :
ProductID | ProductName | Category | Brand | Price | ReleaseDate | InStock | DiscountPercent | Color | WeightKg |
1 | Laptop | Electronics | HP | 1200 | 2023-01-01 | Yes | 15 | Black | 1,5 |
2 | Smartphone | Electronics | Apple | 999 | 2023-03-15 | Yes | 10 | Silver | 0,2 |
3 | Backpack | Accessories | Nike | 70 | 2022-08-01 | No | 5 | Blue | 0,7 |
4 | Water Bottle | Accessories | CamelBak | 35 | 2023-04-20 | Yes | 0 | Green | 0,3 |
5 | Headphones | Electronics | Sony | 150 | 2022-12-05 | Yes | 20 | Black | 0,4 |
Comme vous le voyez nous avons 10 colonnes dans notre exemple.
Maintenant, nous voudrions sélectionner toutes les lignes en stock, soit le champ InStock = ‘Yes’.
Cependant, nous voudrions afficher toutes les colonnes sauf celle que nous venons de filtrer (InStock).
Voici l’approche :
WITH product AS (
SELECT 1 AS ProductID, 'Laptop' AS ProductName, 'Electronics' AS Category, 'HP' AS Brand, 1200 AS Price, '2023-01-01' AS ReleaseDate, 'Yes' AS InStock, 15 AS DiscountPercent, 'Black' AS Color, 1.5 AS WeightKg UNION ALL
SELECT 2, 'Smartphone', 'Electronics', 'Apple', 999, '2023-03-15', 'Yes', 10, 'Silver', 0.2 UNION ALL
SELECT 3, 'Backpack', 'Accessories', 'Nike', 70, '2022-08-01', 'No', 5, 'Blue', 0.7 UNION ALL
SELECT 4, 'Water Bottle', 'Accessories', 'CamelBak', 35, '2023-04-20', 'Yes', 0, 'Green', 0.3 UNION ALL
SELECT 5, 'Headphones', 'Electronics', 'Sony', 150, '2022-12-05', 'Yes', 20, 'Black', 0.4
)
SELECT * EXCEPT(InStock) # C'est la clause qui nous intéresse
FROM product
WHERE InStock = 'Yes' # Sélection des lignes dont les produits sont en stock
;
La syntaxe est donc :
SELECT * EXCEPT(les_noms_de_colonnes_à_exclure)
Et voici le résultat :
ProductID | ProductName | Category | Brand | Price | ReleaseDate | DiscountPercent | Color | WeightKg |
1 | Laptop | Electronics | HP | 1200 | 2023-01-01 | 15 | Black | 1,5 |
2 | Smartphone | Electronics | Apple | 999 | 2023-03-15 | 10 | Silver | 0,2 |
4 | Water Bottle | Accessories | CamelBak | 35 | 2023-04-20 | 0 | Green | 0,3 |
5 | Headphones | Electronics | Sony | 150 | 2022-12-05 | 20 | Black | 0,4 |
✅ La colonne InStock n’a donc pas été prise et seules les lignes dont InStock = ‘Yes’ ont été sélectionnées.
Merci de votre lecture !