Table des matières
2. Expressions de table communes (CTES) et requêtes récursives
3. Données pivotantes et non-diffamées
4. Jointes avancées et opérations
5. Logique conditionnelle avec cas et agrégation
6. Gestion des doublons et qualité des données
Réflexions finales
Maison base de données SQL Un guide de SQL avancé pour la manipulation des données complexes

Un guide de SQL avancé pour la manipulation des données complexes

Aug 06, 2025 am 12:02 AM

Les fonctions de fenêtre permettent des calculs entre les lignes associées sans les effondrer, permettant des classements, des totaux d'exécution et des comparaisons dans les partitions, en utilisant la syntaxe comme fonction () sur (partition par ordre de colonne par colonne). 2. Les expressions de table courantes (CTES) améliorent la lisibilité de la requête en créant des ensembles de résultats temporaires avec la clause avec la clause, et les CTES récursifs gèrent les données hiérarchiques via l'ancrage et les membres récursifs combinés avec Union All, garantissant la terminaison. 3. Pivoting transforme les lignes en colonnes (par exemple, la conversion des quarts en colonnes distinctes à l'aide de pivot), tandis que Univot inverse ce processus, bien que la syntaxe varie à l'autre de données comme SQL Server, Oracle et PostgreSQL. 4. Les jointures avancées incluent les jointures non équipées en utilisant des conditions comme entre, les auto-joins pour comparer les lignes dans le même tableau (par exemple, les employés contre les gestionnaires), et les opérations définies telles que l'Union, l'intersection et sauf pour combiner ou filtrer les ensembles de résultats, avec un syndicat, tous étant plus rapides lorsque les doublons sont acceptables. 5. La logique conditionnelle avec le cas permet une affectation de valeur dynamique (par exemple, la catégorisation des tailles d'ordre) et peut être combinée avec une agrégation pour la tabulation croisée (par exemple, les statuts de comptage). 6. Gestion des doublons implique d'utiliser ROW_NUMBER () dans un CTE pour les identifier et les supprimer en fonction des colonnes clés et des derniers horodatages, tandis que la qualité des données est améliorée en standardisant du texte avec des fonctions telles que TRIM et inférieur, et gérer Nulls avec Coalesce (). Advanced SQL permet aux utilisateurs d'effectuer des manipulations de données sophistiquées en tirant parti de ces techniques pour des informations plus profondes, des données plus propres et des transformations plus efficaces, permettant finalement les requêtes plus puissantes et maintenables.

Un guide de SQL avancé pour la manipulation des données complexes

Lorsque vous travaillez avec des ensembles de données importants ou complexes, les requêtes SQL de base ne sont souvent pas à court. Pour extraire des informations significatives, nettoyer les données en désordre ou transformer des informations sur plusieurs sources, vous avez besoin de techniques SQL avancées. Ce guide plonge dans de puissantes fonctionnalités SQL qui permettent une manipulation sophistiquée de données - parfaite pour les analystes, les ingénieurs de données et les développeurs traitant des défis de données du monde réel.

Un guide de SQL avancé pour la manipulation des données complexes

1. Fonctions de la fenêtre: analyser les données en contexte

Les fonctions de fenêtre vous permettent d'effectuer des calculs à travers un ensemble de lignes associées sans les s'effondrer en une seule ligne de sortie (contrairement à un groupe par). Ils sont essentiels pour le classement, les totaux de course, les moyennes mobiles et les comparaisons dans les partitions.

Cas d'utilisation courants:

Un guide de SQL avancé pour la manipulation des données complexes
  • Classez les employés par salaire au sein de chaque département
  • Calculez un total de ventes en cours d'exécution au fil du temps
  • Comparez les valeurs individuelles aux moyennes de groupe

Syntaxe:

 Fonction () sur (
  [Partition par colonne]
  [Ordre par colonne]
  [Clause de trame]
)

Exemple: exécution du total des ventes par mois

Un guide de SQL avancé pour la manipulation des données complexes
 SÉLECTIONNER 
  order_date,
  ventes,
  Sum (ventes) over (ordonnance by order_date) en tant que running_total
De Sales_data;

Exemple: classez les produits par revenus dans chaque catégorie

 SÉLECTIONNER 
  catégorie,
  Product_name,
  revenu,
  Rank () over (partition by category ordonnance by revenue desc) as rank_in_category
Des produits;

Astuce: utilisez ROW_NUMBER() pour un classement unique, RANK() pour les lacunes sur les liens, et DENSE_RANK() pour aucune lacune.


2. Expressions de table communes (CTES) et requêtes récursives

Les CTES rendent les requêtes complexes plus lisibles et modulaires. Ce sont des ensembles de résultats temporaires définis WITH et peuvent être référencés plus tard dans la requête principale.

CTE de base:

 Avec high_value_orders comme (
  Sélectionnez * parmi les commandes où le montant> 1000
)
Sélectionnez Customer_ID, Count (*) 
De high_value_orders 
Groupe par client_id;

Les CTES récursifs sont puissants pour les données hiérarchiques comme les graphiques organisationnels ou les factures.

Exemple: hiérarchie des employés

 Avec un org_tree récursif comme (
  - Cas de base: gestionnaires de niveau supérieur (pas de gestionnaire)
  Sélectionnez Employee_ID, nom, manager_id, 1 en tant que niveau
  Des employés
  Où manager_id est nul

  Union All

  - Cas récursif: employés sous quelqu'un
  Sélectionnez e.employee_id, e.name, e.manager_id, ot.level 1
  Des employés e
  Inner Join org_tree ot sur e.manager_id = ot.employee_id
)
SELECT * FROM ORG_TREE;

Remarque: les CTES récursifs nécessitent un membre d'ancrage et un membre récursif, combiné avec UNION ALL . Assurez-vous toujours que la récursivité se termine.


3. Données pivotantes et non-diffamées

Parfois, les données sont stockées dans un long format mais doivent être présentées largement (ou vice versa). SQL fournit des moyens de pivoter (tourner les lignes vers des colonnes) et Univot.

Exemple pivotant: les ventes par trimestre supposent un tableau quarterly_sales avec colonnes: year , quarter , revenue .

 SÉLECTIONNER *
De Quarterly_Sales
Pivoter (
  Somme (revenus)
  Pour le quart dans ('Q1', 'Q2', 'Q3', 'Q4')
) Comme pvt;

Cela crée des colonnes: year , Q1 , Q2 , Q3 , Q4 .

UNPIVOTTING (RENDOCT): Convertir les colonnes en lignes.

 Année sélectionnée, trimestre, revenus
DEPUIS (
  SELECT année, Q1, Q2, Q3, Q4 de Sales_Summary
) Comme src
Univot (
  Revenus pour le trimestre en (Q1, Q2, Q3, Q4)
) Comme impvt;

Remarque: la syntaxe varie selon la base de données. PostgreSQL utilise une agrégation conditionnelle pour le pivot; SQL Server et Oracle Support PIVOT / UNPIVOT .


4. Jointes avancées et opérations

Au-delà des jointures de base intérieures et gauche, les modèles de jointure avancés aident à résoudre des problèmes de correspondance délicats.

un. Non-Equi se joint à des conditions autres que l'égalité.

 Sélectionnez E.Name, S.Salary_Range
Des employés e
Rejoignez Salary_bands S
Sur E.Salary entre S.Min_salary et S.max_salary;

né Les auto-joins comparent les lignes dans le même tableau.

 - Trouvez des employés gagnant plus que leurs managers
Sélectionnez E.Name comme employé, E.Salary, m.name en tant que directeur, M.Salary en tant que mgr_salary
Des employés e
Rejoignez les employés M sur e.manager_id = M.Employee_id
Où e.salary> M.Salary;

c. Opérations de set: Union, intersecte, sauf combiner ou comparer les ensembles de résultats.

 - les clients qui ont acheté au premier trimestre mais pas au T2
Sélectionnez Customer_ID dans Q1_Sales
SAUF
Sélectionnez Customer_ID dans Q2_Sales;

CONSEIL: Utilisez UNION ALL lorsque les doublons sont acceptables - c'est plus vite que UNION .


5. Logique conditionnelle avec cas et agrégation

Les expressions CASE apportent une logique de type programmation dans SQL, permettant des valeurs de colonne dynamique.

Exemple: catégoriser les tailles de commande

 SÉLECTIONNER 
  order_id,
  montant,
  CAS 
    Quand le montant> 1000 puis «grand»
    Lorsque le montant entre 500 et 1000, alors «moyen»
    Sinon «petit»
  Se terminer comme Order_Size
Des ordres;

Combinez avec agrégation pour la réduction de la tabulation:

 SÉLECTIONNER
  Compter (*) comme total,
  Compter (cas quand status = 'expédié' puis 1 extrémité) comme expédié,
  Compter (cas quand status = «en attente» puis 1 fin) comme en attente
Des ordres;

6. Gestion des doublons et qualité des données

Même avec des schémas propres, les données réelles ont des doublons et des incohérences.

Supprimer les doublons à l'aide de row_number ()

 Avec classé comme (
  SÉLECTIONNER *,
    Row_number () sur (
      Partition par COL1, Col2 Order by Updated_at DESC
    ) Comme RN
  De Raw_Table
)
Supprimer de classé où RN> 1;

Remarque: Certaines bases de données ne permettent pas DELETE directement des CTES: utilisez des sous-requêtes ou des tables temporaires.

Standardiser les données de texte

 Mettre à jour les clients
Définir Email = inférieur (TRIM (EMAIL)),
    name = initcap (trim (name));

Utilisez COALESCE() pour gérer Nulls:

 Sélectionnez Coalesce (Phone_Home, Phone_Mobile, «pas de numéro») comme contact_number
Des clients;

Réflexions finales

Advanced SQL ne concerne pas seulement la rédaction de requêtes plus longues - il s'agit de penser dans les ensembles, de comprendre les relations de données et d'appliquer le bon outil pour le travail. Que vous vous classions, pivotez, traversiez des hiérarchies ou des données de nettoyage, ces techniques vous donnent un contrôle fin sur votre flux de travail de manipulation de données.

Pratiquez-les avec de vrais ensembles de données, et bientôt vous rédigerez des requêtes non seulement puissantes mais aussi claires et maintenables.

Fondamentalement, une fois que vous passez au-delà de la sélection et où, la véritable puissance de SQL s'ouvre.

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

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

Sujets chauds

Tutoriel PHP
1535
276
Edge Computing et SQL: traitement des données au bord Edge Computing et SQL: traitement des données au bord Jul 21, 2025 am 01:15 AM

L'utilisation de SQL pour traiter les données dans les scénarios de calcul des bords devient importante car elle réduit la pression de transmission et accélère la réponse. Les raisons principales incluent la dispersion des données, la sensibilité à la latence et les ressources limitées. Les défis incluent les contraintes de ressources, les divers formats de données, les exigences élevées en temps réel et le déploiement et la maintenance complexes. Le processus de déploiement comprend la sélection d'un moteur SQL adapté au bord, l'accès aux sources de données, la rédaction de scripts SQL et la sortie des résultats. Des conseils utiles incluent l'utilisation des fonctions de fenêtre, le filtrage et l'échantillonnage, la simplification des requêtes imbriquées, l'utilisation de tables de mémoire et la connexion des sources de données externes.

Principes de conception de la base de données relationnels pour les développeurs SQL Principes de conception de la base de données relationnels pour les développeurs SQL Jul 21, 2025 am 01:56 AM

Lors de la conception d'une base de données relationnelle, quatre principes clés doivent être suivis. Tout d'abord, utilisez correctement les contraintes de clés primaires et étrangères pour assurer l'intégrité des données et la précision d'association; Deuxièmement, effectuez une conception standardisée raisonnablement, atteignant généralement la troisième forme normale (3NF), éliminant la redondance et garantissant la cohérence des données; Troisièmement, établir des index appropriés pour les requêtes communes afin d'améliorer les performances de la requête mais éviter le sur-index; Enfin, en utilisant des spécifications de dénomination cohérentes et des styles structurels pour améliorer la lisibilité et la maintenabilité. La maîtrise de ces principes peut aider à construire une structure de base de données claire, efficace et robuste.

Options informatiques sans serveur SQL Server Options informatiques sans serveur SQL Server Jul 27, 2025 am 03:07 AM

SQLServer lui-même ne prend pas en charge l'architecture sans serveur, mais la plate-forme cloud fournit une solution similaire. 1. Le pool de serveur Azure peut interroger directement les fichiers de données et les charges en fonction de la consommation de ressources; 2. AzureFunctions combinées avec COSMOSDB ou Blobstorage peut réaliser un traitement SQL léger; 3. Awsathena prend en charge les requêtes SQL standard pour les données S3 et les charges basées sur des données numérisées; 4. GooglebigQuery s'approche du concept sans serveur via FederatedQuery; 5. Si vous devez utiliser la fonction SQLServer, vous pouvez choisir sans serveur d'Azuresqldatabase sans service

Comment calculez-vous la différence entre deux dates dans SQL? Comment calculez-vous la différence entre deux dates dans SQL? Aug 02, 2025 pm 01:29 PM

Pour calculer la différence entre deux dates, vous devez sélectionner la fonction correspondante en fonction du type de base de données: 1. Utilisez DADAFIF () pour calculer la différence de jour dans MySQL, ou spécifiez les unités telles que l'heure et la minute dans TimeStampDiff (); 2. Utilisez DADAIFF (DATE_PART, START_DATE, END_DATE) dans SQLServer et spécifiez les unités; 3. Utilisez la soustraction directe dans PostgreSQL pour obtenir la différence de jour, ou utilisez l'extrait (dayFromage (...)) pour obtenir des intervalles plus précis; 4. Utilisez la fonction Julianday () pour soustraire la différence de jour dans SQLite; Faites toujours attention à la commande de date

Master SQL pour l'analyse des affaires de l'intelligence d'affaires Master SQL pour l'analyse des affaires de l'intelligence d'affaires Jul 26, 2025 am 07:53 AM

Tomastersqlforbianalytics, startByUnderstandingBidatastructures likefactanddimensionTables, thesUsTrategicaggregations withGroupBbyandhaving, levariagedatefunctionsformes-basysysis, andwriteClean, se maintientablequeries.

Niveaux d'isolement dans SQL Server: Lire engagée, instantané, sérialisable Niveaux d'isolement dans SQL Server: Lire engagée, instantané, sérialisable Jul 21, 2025 am 12:35 AM

TheThreemainsqlServerisolationLevels - Readcommitted, Snapshot et Sérialisable - DifférinconCurrencyAndConsistence.1.ReadcommittedPreventsDirtyReadsButallowsNon-RepeatableAndHantomreads, offre la formulation et la canalisation et le canalisation

Comment renommer une table dans SQL? Comment renommer une table dans SQL? Jul 21, 2025 am 02:19 AM

Le changement de nom de table est généralement implémenté dans SQL à l'aide de la commande renommée ou altertable. 1.MySQL, MARIADB ET D'AUTRES BASES DE DONNÉES Utilisent Renametableold_Table_NameToneW_Table_Name; Syntaxe, prend en charge les opérations par lots; 2. SqlServer nécessite une procédure stockée SP_RENAME, et la syntaxe est execsp_rename'old_table_name ',' new_table_name '; 3.PostgreSQL Utilise Alterableold_Table_NameRenametOnew_Table_Name

Cube SQL et rouleau pour l'agrégation multidimensionnelle Cube SQL et rouleau pour l'agrégation multidimensionnelle Jul 29, 2025 am 12:28 AM

Le cube est utilisé pour générer une agrégation de toutes les combinaisons de dimensions, adaptées à une analyse croisée; Rollup est progressivement résumé aux niveaux hiérarchiques, adapté aux données avec des relations hiérarchiques. Cube génère un total de 8 combinaisons selon la région, le produit et le trimestre, tandis que Rollup génère un résumé de l'année, du mois, du jour et d'autres niveaux selon l'année, le mois et le jour. Cube convient à la visualisation de tous les résultats transversaux, Rollup convient à l'affichage des hiérarchies. Notez que Cube peut faire exploser l'ensemble de résultats et Rollup dépend de l'ordre sur le terrain. La ligne récapitulative peut être identifiée via la fonction de groupement (), et la ligne totale est nommée avec coalesce pour améliorer la lisibilité.

See all articles