Une fonction de fenêtrage calcule sur un ensemble de lignes liées à la ligne courante sans les regrouper, donc vous gardez chaque ligne et gagnez une colonne calculée. GROUP BY réduit les lignes à une seule par groupe. Vous pouvez donc afficher chaque commande à côté du total dépensé par le client dans le même résultat, ce qui avec GROUP BY demanderait une sous-requête et une jointure de retour.
Pourquoi les recruteurs posent cette question
Les fonctions de fenêtrage sont la ligne de partage entre le SQL basique et le SQL intermédiaire, et la plus grande partie du vrai travail d'analyste (cumuls, classements, comparaisons de périodes, déduplication) en dépend. Les recruteurs veulent entendre le point du non regroupement, une bonne compréhension de PARTITION BY par rapport à ORDER BY, et idéalement la conscience que le cadre de fenêtre par défaut change le résultat.
Comment structurer votre réponse
- Commencez par la différence clé : les lignes sont conservées, pas regroupées.
- Expliquez PARTITION BY comme le regroupement et ORDER BY comme la séquence.
- Donnez deux ou trois usages réels que vous avez écrits.
- Mentionnez la clause de cadre et sa valeur par défaut quand un ORDER BY est présent.
Exemple de réponse
La différence de fond, c'est que GROUP BY regroupe et qu'une fonction de fenêtrage non. Avec une fenêtre je garde chaque ligne et j'ajoute une colonne calculée sur un ensemble de voisines défini, donc je peux montrer chaque transaction à côté du cumul de ce client sans auto-jointure. PARTITION BY dit quelles lignes appartiennent à la même fenêtre, donc partition by customer_id, et ORDER BY définit la séquence à l'intérieur, ce qui fait fonctionner les cumuls et les comparaisons avec lag. Je m'en sers en permanence : row_number pour prendre le dernier enregistrement par entité, lag pour calculer l'évolution d'un mois sur l'autre, sum sur une partition ordonnée pour du chiffre d'affaires cumulé. Ce qu'il faut vraiment savoir, c'est le cadre. Dès que vous ajoutez ORDER BY, le cadre par défaut va du début de la partition à la ligne courante, ce qui est exactement ce qu'on veut pour un cumul mais pas pour un total sur toute la partition. Si je veux le total du groupe sur chaque ligne, je retire le ORDER BY ou je définis le cadre explicitement.
Vous passez cet entretien bientôt ? GhostPilot écoute votre appel en direct, repère la question dès qu'elle est posée et affiche une réponse structurée à l'écran en temps réel. Essayez-le lors de votre prochain entretien blanc, ou prenez un Session Pass à $29, sans abonnement, pour le jour J.
Voir comment ça marcheQuestions de relance à prévoir
- Quel est le cadre de fenêtre par défaut et quand surprend-il les gens ?
- Comment calculeriez-vous une moyenne mobile sur sept jours en SQL ?
- Peut-on filtrer directement sur le résultat d'une fonction de fenêtrage ?
Autres questions pour Analyste de données
Votre recruteur posera sa propre version de celle-ci. Collez votre véritable fiche de poste dans le Question Predictor gratuit et obtenez les 20 questions que ce poste a le plus de chances de poser, avec ce que chacune cherche vraiment à sonder.
Prédire mes questions