Fonctions SQL prises en charge
Fonctions SQL courantes utilisées pour SQL API interroger et analyser les données d’incident.
ServiceNow prend en charge diverses fonctions SQL pour interroger et analyser les données dans des tables telles que la table Incident. Cette liste abrégée couvre les fonctions SQL courantes organisées par catégorie, avec des exemples de cas d’utilisation et des requêtes axées sur des scénarios de gestion des incidents.
Remarque :
Le moteur de requête ne prend actuellement en charge que les jointures INNER et LEFT OUTDOOR.
| Catégorie | Nom de fonction | Exemple de cas d’utilisation | Exemple de requête |
|---|---|---|---|
| Fn d’agrégat | MOY | Calculer le niveau de priorité moyen des incidents résolus pour mesurer les tendances de gravité | SÉLECTIONNEZ AVG(CAST(priority AS FLOAT)) AS avg_priority_level FROM INCIDENT WHERE WHERE state = 7 ; |
| Fn d’agrégat | NOMBRE | Nombre total d’incidents ouverts, par niveau de priorité | SÉLECTIONNEZ LA PRIORITÉ, LE NOMBRE (*) incident_count À PARTIR DE L’INCIDENT OÙ L’ÉTAT EST DANS (1,2,3) REGROUPER PAR PRIORITÉ ; |
| Fn d’agrégat | SOMME | Calculer le nombre total de mises à jour sur tous les incidents P1 | SÉLECTIONNEZ SOMME(sys_mod_count) COMME total_updates À PARTIR DE L’INCIDENT OÙ PRIORITÉ = 1 ; |
| Fn d’agrégat | MAX | Trouver la valeur de priorité la plus élevée dans les incidents ouverts | SÉLECTIONNEZ MAX(priority) AS highest_priority À PARTIR DE L’INCIDENT OÙ L’ÉTAT EST DANS (1,2,3) ; |
| Clauses | TICKET | Catégoriser les incidents par priorité pour la visualisation du tableau de bord | SELECT number, CASE WHEN priority = 1 THEN 'Critical' WHEN priority = 2 THEN 'High' WHEN priority = 3 THEN 'Medium' ELSE 'Low' END AS priority_label FROM incident WHERE state IN (1,2,3) ; |
| Clauses | HAUT | Identifier les 10 incidents les plus modifiés pour la revue de la qualité | SÉLECTIONNEZ LES 10 PREMIERS NUMÉROS, sys_mod_count À PARTIR DE L’INCIDENT TRIER PAR sys_mod_count DÉCROISSANT ; |
| Clauses | GROUPER PAR | Analyser le volume d’incidents par catégorie pour déterminer les tendances | SELECT category, COUNT(*) AS count FROM incident WHERE state IN (1,2,3) GROUP BY category ; |
| Clauses | AYANT | Trouvez les groupes d’affectation avec plus de 50 incidents ouverts pour la planification des capacités | SÉLECTIONNEZ assignment_group , COUNT(*) COMME open_count À PARTIR DE L’INCIDENT OÙ L’ÉTAT EST DANS (1,2,3) REGROUPER PAR assignment_group AYANT COUNT(*) > 50 ; |
| Clauses | JOINDRE À GAUCHE | Répertorier les incidents avec des détails d’utilisateur affecté pour le rapport de performance de l’équipe | SELECT i.number, i.priority, u.name AS assigned_to, u.department FROM incident i LEFT JOIN sys_user u ON i.assigned_to = u.sys_id WHERE i.state IN (1,2,3) ; |
| Clauses | TRIER PAR ASC | Récupérer les incidents les plus anciens par date d’ouverture pour revue d’escalade | SÉLECTIONNER LE NUMÉRO, LE short_description opened_at À PARTIR DE L’INCIDENT OÙ L’ÉTAT EST DANS (1,2,3) TRIER PAR opened_at ASC ; |
| Clauses | DISTINCT | Obtenir une liste unique de catégories à partir des incidents récents | SÉLECTIONNEZ UNE CATÉGORIE DISTINCTE DE L’INCIDENT OÙ état DANS (1,2,3) ; |
| Clauses | SOUS-REQUÊTE (DE) | Calculer le nombre moyen d’incidents par utilisateur à partir des affectations actives | SÉLECTIONNER MOY(incident_count) COMME avg_per_user À PARTIR DE (SELECT assigned_to, COUNT(*) COMME incident_count À PARTIR DE INCIDENT OÙ assigned_to N’EST PAS NULL GROUPER PAR assigned_to) COMME user_stats ; |
| Clauses | SOUS-REQUÊTE (OÙ) | Rechercher les incidents affectés aux utilisateurs actifs de l’assistance informatique | SÉLECTIONNEZ LE NUMÉRO, short_description assigned_to À PARTIR DE L’INCIDENT OÙ assigned_to DANS (SÉLECTIONNEZ sys_id À PARTIR DE sys_user OÙ département = 'Support informatique' ET actif = 1) ET état DANS (1,2,3) ; |
| Clauses | LE SYNDICAT | Combiner les incidents de priorité élevée et non affectés pour la liste des actions urgentes | SELECT number, 'P1-Critical' AS reason, assigned_to, priority, state FROM incident WHERE priority = 1 AND state IN (1,2,3) UNION SELECT number, 'Unassigned' AS reason, assigned_to, priority, state FROM incident WHERE assigned_to IS NULL AND STATE IN (1,2,3) ; |
| DateHeure FN | date_part | Analyser les schémas de création d’incidents par année pour les tendances historiques | SÉLECTIONNEZ date_part('année', opened_at) COMME année, NOMBRE(*) COMME incidents À PARTIR DE L’INCIDENT GROUPER PAR date_part('année', opened_at) TRIER PAR date_part('année', opened_at) ; |
| DateHeure FN | date_trunc | Regrouper les incidents par mois pour le rapport de tendances mensuel de la direction | SELECT date_trunc('month', opened_at) AS month, COUNT(*) AS total FROM incident GROUP BY month ORDER BY month ; |
| FN numérique | L’ABS | Calculer la différence absolue entre les valeurs de priorité pour la normalisation | SELECT number, ABS(priority - 3) AS priority_deviation FROM INCIDENT WHERE STATE IN (1,2,3) ; |
| FN numérique | PLAFOND | Arrondir la division de priorité pour les calculs de notation pondérée | SELECT number, priority, CEILING(CAST(sys_mod_count AS FLOAT) / 3) AS update_score FROM INCIDENT WHERE STATE IN (1,2,3) ; |
| FN numérique | ÉTAGE | Calculer la moyenne planchée des nombres de modifications pour les mesures de base de référence | SÉLECTIONNEZ assignment_group, FLOOR(AVG(CAST(sys_mod_count AS FLOAT))) COMME avg_updates À PARTIR DU GROUPE D’INCIDENTS PAR assignment_group ; |
| Opérateurs | DANS | Filtrer les incidents pour les catégories critiques pour l’entreprise pour le tableau de bord de direction | SÉLECTIONNER un numéro, une catégorie, une priorité, un état DEPUIS l’incident OÙ catégorie IN (« Réseau », « Base de données », « Sécurité », « Application ») ; |
| Opérateurs | N’EST PAS NUL | Trouver les incidents avec des affectations d’éléments de configuration pour l’analyse CMDB | SÉLECTIONNEZ UN NUMÉRO, cmdb_ci, UNE CATÉGORIE assignment_group À PARTIR D’UN INCIDENT OÙ cmdb_ci N’EST PAS NUL ; |
| Opérateurs | J’AIME | Rechercher des incidents liés à la réinitialisation du mot de passe et à l’accès pour l’analyse en libre-service | SÉLECTIONNEZ LE NUMÉRO, LE short_description caller_id À PARTIR DE L’INCIDENT OÙ short_description COMME « %password % » OU short_description COMME « %login % » ; |
| Opérateurs | PAS ENTRE | Identifier les incidents avec des valeurs de priorité inhabituelles pour l’audit de la qualité des données | SÉLECTIONNEZ le numéro, la priorité short_description L’INCIDENT D’ORIGINE OÙ LA PRIORITÉ NE SE SITUE PAS ENTRE 2 ET 4 ; |
| ServiceNow PN spécifique | DV | Afficher des valeurs de champ de référence lisibles par l’homme dans les rapports | SELECT number, DV(assignment_group) AS group_name, DV(assigned_to) AS assignee_name FROM INCIDENT WHERE STATE IN (1,2,3) ; |
| Chaîne FN | CONCAT_WS | Créer des résumés d’incidents formatés pour les systèmes de création de tickets externes | SÉLECTIONNEZ concat_ws(' - ', number, category, short_description) AS formatted_summary FROM incident WHERE state = 7 ; |
| Chaîne FN | INFÉRIEUR | Standardiser les noms de catégories pour le regroupement et l’analyse non sensibles à la casse | SÉLECTIONNEZ LOWER(category) AS category_normalized FROM INCIDENT ; |
| Chaîne FN | REMPLACER | Transformer les numéros d’incident pour l’intégration d’un système externe | SÉLECTIONNEZ REPLACE(number, 'INC', 'TICKET-') EN TANT QUE external_id, short_description DE L’INCIDENT WHERE STATE = 7 ; |
| Chaîne FN | SOUS-STR | Extraire le préfixe de l’incident pour la catégorisation et la génération de rapports | SELECT number, SUBSTR(number, 1, 3) AS prefix, SUBSTR(number, 4, 20) AS sequence FROM incident ; |
| Chaîne FN | DÉCOUPAGE | Nettoyer les espaces des descriptions pour améliorer la qualité des données | SÉLECTIONNEZ LE NUMÉRO, LE TRIM(short_description) COMME clean_description À PARTIR DE L’INCIDENT OÙ short_description N’EST PAS NUL ; |
| Windows FN | CLASSEMENT() | Classer les incidents par nombre de mises à jour pour identifier les tickets les plus fréquemment modifiés | SÉLECTIONNER NUMBER, sys_mod_count, assignment_group, RANK() OVER (ORDER BY sys_mod_count DESC) AS modification_rank FROM INCIDENT WHERE assignment_group IS NOT NULL ; |