“Je connais les montant max de dépense des clients chaque jour depuis le début du moi 💪”. ”Top 👍. Et quels sont ces clients pour leur envoyer un mail de remerciement et d’un coupon pour les encourager à continuer leurs achats ?”. ”Euh…”.
Pour éviter de faire une requête trop complexe, il existe une jolie fonction en SQL et disponible sur BigQuery qui s’appelle MAX_BY().
Cette fonction permet d’obtenir la valeur d’une colonne associé au max d’une autre colonne.
Quoi ? Ce n’est pas clair ? Bon, sans contexte, c’est peut-être un peu brute 😅.
Commençons par la syntaxe :
MAX_BY(value, expr)- value : c’est la colonne dont nous voulons récupérer la valeur ;
- expr : c’est la colonne pour laquelle nous avons calculé la maximum (mais dans une autre ligne du SELECT).
Cela s’éclairci, mais vous avez besoin d’un exemple ?
Voici le résultat :
sale_date | max_sale_amount | customer_with_max_sale |
2024-07-13 | 200 | C002 |
2024-07-14 | 300 | C005 |
2024-07-15 | 280 | C010 |
Pour expliquer tout ce qui vient de se passer :
Dans les données nous avons trois jours de vente, du 13/07/2024 au 15/07/2024 avec pour chaque ligne une vente et son montant ainsi que le client.
L’attendu était d’avoir pour chacun de ces jours le montant maximale d’une vente et le client ayant fait l’achat.
Le premier champ était donc le jour, la deuxième le maximum du montant (il faut donc penser à ajouter le premier champ dans un GROUP BY).
Le dernier champ est l’utilisation de la fonction MAX_BY() qui va retrouver le client associé au montant de l’achat maximum.
Merci de votre lecture !