Les fonctions de fenêtre sont utilisées dans SQL pour calculer plusieurs lignes de données liées à la ligne actuelle sans fusionner les résultats. Il se distingue des fonctions d'agrégats conventionnelles telles que SUM ou AVG, et peut conserver toutes les lignes de la table d'origine et ajouter des valeurs calculées telles que les totaux d'exécution, les classements ou les moyennes mobiles. Les utilisations courantes incluent: 1. Row Ranking (Using Rank (), dense_rank (), row_number ()); 2. Sum cumulatif (comme les ventes cumulatives mensuelles); 3. Comparaison de la ligne actuelle avec les lignes précédentes; 4. Obtenez les N supérieurs de chaque groupe. La structure de base est function_name (arguments) over ([partition by] [ordonnance by] [frame_clause]), où la partition par regroupement, l'ordre par tri et frame_clause définit la plage de calcul. Convient pour les scénarios où les données d'un groupe doivent être comparées, les valeurs agrégées sont affichées sans perdre de détails, en évitant l'auto-connexion et ne peuvent être utilisées que dans SELECT ou ORDER BY. Après la ma?trise, les requêtes complexes seront grandement simplifiées.
Les fonctions de fenêtre dans SQL sont des outils qui vous permettent de faire des calculs à travers un ensemble de lignes de table qui sont en quelque sorte liées à la ligne actuelle - sans effondrer le résultat en une seule valeur comme les fonctions agrégées régulières (comme SUM()
ou AVG()
).

Ils sont super pratiques lorsque vous souhaitez conserver toutes vos lignes d'origine, mais également ajouter des valeurs calculées, comme l'exécution des totaux, les classements ou les moyennes mobiles.
Qu'est-ce qui rend les fonctions de fenêtre différentes?
Des agrégats réguliers de données cohérentes. Par exemple, si vous utilisez SUM(sales)
sans fonction de fenêtre, cela vous donnera une somme totale pour l'ensemble de données (ou sous-ensembles groupés). Mais avec une fonction de fenêtre, vous pouvez afficher chaque ligne individuelle et son total, son rang ou en moyenne correspondant en même temps.

Par exemple:
Sélectionnez le nom, le département, le salaire, AVG (salaire) sur (partition par département) Des employés;
Cela montre le salaire de chaque employé et le salaire moyen de son département - le tout en même.

Ainsi, au lieu de résumer et de perdre des détails, les fonctions de fenêtre préservent le contexte tout en vous permettant de calculer des résumés intelligents.
Utilisations courantes des fonctions de fenêtre
Voici quelques-unes des choses les plus courantes que les gens les utilisent:
- Classement des rangées : comme le classement des vendeurs par combien ils ont vendu.
- Exécution des totaux / sommes cumulatives : comme les ventes totales au fil du temps.
- Comparaison de la ligne actuelle à la ligne précédente / suivante : utile dans l'analyse des séries chronologiques.
- Obtenir le Top N par groupe : comme les 3 meilleurs élèves par classe.
Regardons quelques exemples.
Rang des rangées
Vous pouvez utiliser RANK()
, DENSE_RANK()
ou ROW_NUMBER()
pour attribuer des rangs au sein des groupes:
Sélectionnez le nom, le département, le salaire, Rank () Over (partition par Order Order par Salaire DESC) Des employés;
Cela classe les employés par salaire au sein de chaque département , vous pouvez donc facilement voir qui est le plus haut salarié de chacun.
Totaux de course
Si vous suivez les ventes mensuelles, un total de course aide à montrer la croissance au fil du temps:
Sélectionnez mois, ventes, Sum (ventes) sur (commande par mois entre les rangées précédentes et la rangée actuelle) à partir de mensuel_sales;
Cela vous donne un total cumulatif jusqu'à chaque mois.
Structure de base d'une fonction de fenêtre
La syntaxe générale ressemble à ceci:
function_name (arguments) sur ( [Partition par colonnen_list] [Ordre par Sort_Columns] [frame_clause] )
-
PARTITION BY
: similaire au groupe par - il divise les lignes en groupes pour appliquer la fonction séparément. -
ORDER BY
: contr?le l'ordre des lignes à l'intérieur de la fenêtre. -
frame_clause
: définit les lignes incluses dans le calcul (comme de la première ligne à la ligne actuelle).
Certaines bases de données ont des valeurs par défaut ou des certificats légèrement différents, il est donc bon de vérifier ce qui est disponible dans votre système.
Quand devriez-vous les utiliser?
Utilisez les fonctions de fenêtre lorsque vous avez besoin de:
- Comparez une ligne aux autres dans le même groupe.
- Affichez les valeurs agrégées à c?té des données brutes.
- évitez les auto-joins juste pour calculer quelque chose de relatif.
Ils simplifient les requêtes complexes et fonctionnent souvent mieux que des alternatives comme les sous-requêtes corrélées ou les jointures multiples.
N'oubliez pas: les fonctions de fenêtre ne fonctionnent que dans SELECT
ou ORDER BY
clauses - pas dans WHERE
.
Fondamentalement, c'est tout. Une fois que vous avez compris, ils deviennent l'une de ces fonctionnalités SQL, vous vous demandez comment vous avez vécu sans.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undress AI Tool
Images de déshabillage gratuites

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
échangez les visages dans n'importe quelle vidéo sans effort grace à notre outil d'échange de visage AI entièrement gratuit?!

Article chaud

Outils chauds

Bloc-notes++7.3.1
éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Si / Else Logic est principalement implémenté dans les instructions de sélection de SQL. 1. Le cas où la structure peut renvoyer différentes valeurs en fonction des conditions, telles que le marquage faible / moyen / élevé selon l'intervalle salarial; 2. MySql fournit la fonction if () pour un choix simple de deux à juger, par exemple si la marque répond à la qualification de bonus; 3. L'affaire peut combiner des expressions booléennes pour traiter plusieurs combinaisons d'états, telles que juger la catégorie des employés ?à haute teneur en salaire et jeune?; Dans l'ensemble, le cas est plus flexible et adapté à une logique complexe, tandis que si cela convient à une écriture simplifiée.

Créez des tables temporaires dans SQL pour stocker les ensembles de résultats intermédiaires. La méthode de base consiste à utiliser l'instruction CreateEmporaryTable. Il existe des différences de détails dans différents systèmes de base de données; 1. Syntaxe de base: la plupart des bases de données utilisent CreateEmporaryTableTemp_Table (définition de champ), tandis que SQLServer utilise # pour représenter des tables temporaires; 2. Générer des tables temporaires à partir des données existantes: les structures et les données peuvent être copiées directement via CreateEmporaryTableas ou SelectInto; 3. Les notes incluent l'étendue de l'action sont limitées à la session en cours, à la renommée mécanisme de traitement, aux frais généraux de performance et aux différences de comportement dans les transactions. Dans le même temps, des index peuvent être ajoutés aux tables temporaires pour optimiser

La méthode d'obtention de la date et de l'heure actuelles en SQL varie du système de base de données. Les méthodes courantes sont les suivantes: 1. MySQL et MARIADB utilisent maintenant () ou current_timestamp, qui peuvent être utilisées pour interroger, insérer et définir des valeurs par défaut; 2. PostgreSQL utilise maintenant (), qui peut également utiliser Current_timestamp ou tapez la conversion pour supprimer les fuseaux horaires; 3. SqlServer utilise GetDate () ou SysDateTime (), qui prend en charge les paramètres d'insertion et de valeur par défaut; 4. Oracle utilise Sysdate ou Systimestamp et prêtez l'attention à la conversion du format de date. La ma?trise de ces fonctions vous permet de traiter les corrélations de temps de manière flexible dans différentes bases de données

Le mot-clé distinct est utilisé dans SQL pour supprimer les lignes en double dans les résultats de la requête. Sa fonction principale est de s'assurer que chaque ligne de données renvoyée est unique et convient à l'obtention d'une liste de valeurs uniques pour une seule colonne ou plusieurs colonnes, telles que le département, le statut ou le nom. Lorsque vous l'utilisez, veuillez noter que distinct agit sur toute la ligne plut?t qu'une seule colonne, et lorsqu'il est utilisé en combinaison avec plusieurs colonnes, il renvoie une combinaison unique de toutes les colonnes. La syntaxe de base est SelectDistinctColumn_namefromTable_name, qui peut être appliquée à une colonne unique ou à plusieurs requêtes de colonne. Faites attention à son impact sur les performances lorsque vous l'utilisez, en particulier sur les grands ensembles de données qui nécessitent des opérations de tri ou de hachage. Les malentendus courants incluent la croyance erronée que distinct n'est utilisé que pour les colonnes uniques et abusée dans des scénarios où il n'est pas nécessaire de déduir

La principale différence entre l'endroit et le fait d'avoir le filtrage du filtrage: 1. Où filtre les lignes avant de se regrouper, agissant sur les données d'origine et ne peut pas utiliser la fonction agrégée; 2. Avoir filtre les résultats après le regroupement et agir sur les données agrégées et peut utiliser la fonction agrégée. Par exemple, lors de l'utilisation de l'endroit où filtrer les employés bien rémunérés dans la requête, puis de regrouper les statistiques, puis d'utiliser le fait de dépister les départements avec un salaire moyen de plus de 60 000, l'ordre des deux ne peut pas être modifié. Où s'exécute toujours en premier pour s'assurer que seules les lignes qui remplissent les conditions participent au regroupement et ayant des filtres supplémentaires sur la sortie finale en fonction des résultats du groupe.

Dans la conception de la base de données, utilisez l'instruction CreateTable pour définir les structures et les contraintes de table pour assurer l'intégrité des données. 1. Chaque tableau doit spécifier le champ, le type de données et la clé primaire, tels que user_idIntprimaryKey; 2. Ajoutez Notnull, unique, par défaut et d'autres contraintes pour améliorer la cohérence des données, telles que EmailVarchar (255) notNullunique; 3. Utilisez ForeignKey pour établir la relation entre les tables, telles que les commandes références au tableau La clé principale de la table des utilisateurs via user_id.

AsequenceObjectInsqlGeneratesequenceofNumericValuesBasedSpecifiedRules, communément utilisés pour la rénovation générale de réductions et les tables.1.

SQLFunctions et storedproceduresdifffeRinpurpose, returnBehavior, CallingContex
