> For the complete documentation index, see [llms.txt](https://navixy.com/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://navixy.com/docs/analytics/fr/example-queries/common-queries.md).

# Requêtes courantes

Exemples de modèles SQL pour les informations sur les objets, les emplacements des appareils, l'activité des véhicules, l'affectation des conducteurs, les données du capteur et l'analyse des zones géospatiales

Lorsque vous vous connectez à la base de données, vous pourrez récupérer des données via des requêtes SQL. Cette section fournit des exemples de requêtes SQL pour vous aider à commencer à travailler avec le Private Telematics Lakehouse. Ces exemples montrent comment accéder aux données et les analyser à partir du **Données brutes** couche, qui contient des données métier et télématiques brutes avec une transformation minimale.

{% hint style="danger" %}
Veuillez noter : étant donné que la base de données contient une énorme quantité d’informations, veuillez vous assurer d’effectuer des requêtes de test basées sur un nombre limité de valeurs récupérées.
{% endhint %}

## Requêtes de base

### Récupérer les informations de base du Traceur

Cette requête renvoie des informations sur les objets (Véhicules/actifs) de votre système :

```sql
Sélectionner
    o.traceur_id,
    o.libellé_Traceur,
    o.model,
    d.device_imei,
    g.libellé_du_groupe
FROM
    raw_business_data.objets o
    LEFT JOIN raw_business_data.devices d ON o.device_id = d.device_id
    JOINTURE GAUCHE raw_business_data.groups g ON o.group_id = g.group_id
OÙ
    o.is_deleted = false
TRIER PAR
    o.Traceur_label;
```

### Obtenir les derniers emplacements des appareils

Récupérez les données de localisation les plus récentes pour tous vos appareils :

```sql
Sélectionner
    t.device_id,
    o.libellé_Traceur,
    -- Convertir les coordonnées entières mises à l'échelle au format décimal
    t.latitude::float / 10000000 AS latitude,
    t.longitude::float / 10000000 AS longitude,
    t.vitesse,
    t.device_time
FROM
    raw_telematics_data.Suivi_data_core t
    JOIN raw_business_data.objects o ON t.device_id = o.device_id
OÙ
    t.device_time > (CURRENT_DATE - INTERVAL '1 day')
    ET t.latitude != 0
    ET t.longitude != 0
TRIER PAR
    t.device_id, t.device_time DESC;
```

{% hint style="info" %}
Les valeurs de coordonnées sont stockées sous forme d'entiers mis à l’échelle par 10^7 afin d’améliorer l’efficacité du stockage dans TimescaleDB. Lors des requêtes, divisez par 10000000 pour revenir au format décimal standard.
{% endhint %}

## Association des données métier et télématiques

### Rapport d’activité du véhicule

Cette requête génère un résumé quotidien des activités en combinant des données commerciales et télématiques :

```sql
Sélectionner
    o.object_label AS véhicule,
    v.vehicle_type,
    DATE(t.device_time) AS date,
    COUNT(DISTINCT DATE_PART('hour', t.device_time)) AS heures_actives,
    MAX(t.speed) AS max_speed,
    AVG(t.speed) AS avg_speed
FROM
    raw_telematics_data.Suivi_data_core t
    JOIN raw_business_data.objects o ON t.device_id = o.device_id
    LEFT JOIN raw_business_data.Véhicules v ON o.Traceur_id = v.Traceur_id
OÙ
    t.device_time BETWEEN '2025-03-01' AND '2025-03-28'
Groupe par
    o.Traceur_label, v.type_de_véhicule, DATE(t.temps_appareil)
TRIER PAR
    o.object_label, DATE(t.device_time);
```

### Affectations du Conducteur et historique de localisation

Suivez quels employés ont été affectés à quels Véhicules et leur historique de localisation :

```sql
Sélectionner 
    o.object_label AS véhicule,
    new_row.changed_datetime AS heure_affectation,
    e_new.first_name || ' ' || e_new.last_name AS new_conducteur_name,
    e_old.first_name || ' ' || e_old.last_name AS ancien_nom_du_conducteur,
    new_row.adresse,
    new_row.latitude,
    new_row.longitude
FROM 
    raw_business_data.historique_du_Conducteur nouvelle_ligne
REJOINDRE 
    raw_business_data.historique_du_Conducteur ancienne_ligne
    ON new_row.changed_datetime = old_row.changed_datetime
    ET new_row.object_id = old_row.object_id
Jointure gauche 
    raw_business_data.employees e_new ON new_row.new_employee_id = e_new.employee_id
Jointure gauche 
    raw_business_data.employees e_old ON old_row.old_employee_id = e_old.employee_id
Jointure gauche 
    raw_business_data.objects o ON new_row.object_id = o.object_id
TRIER PAR 
    heure d'affectation;
```

## Analyse des Données du capteur

### Suivi du niveau de carburant

Cette requête montre comment analyser les Données du capteur de Carburant :

```sql
Sélectionner
    o.object_label AS véhicule,
    t.device_time,
    i.value::numeric AS niveau_de_carburant
FROM
    raw_telematics_data.inputs i
    JOIN raw_business_data.objects o ON i.device_id = o.device_id
    JOIN raw_telematics_data.Suivi_data_core t ON
        i.device_id = t.device_id ET
        i.device_time = t.device_time
OÙ
    i.sensor_name = 'carburant'
    AND t.device_time > (CURRENT_DATE - INTERVAL '7 days')
TRIER PAR
    o.object_label, t.device_time;
```

## Analyse géospatiale

### Véhicules dans les géozones

Identifiez quels Véhicules sont entrés dans des géozones spécifiques :

```sql
Sélectionner
    o.object_label AS véhicule,
    z.zone_label AS géozone,
    t.device_time AS heure_d_entree
FROM
    raw_telematics_data.Suivi_data_core t
    JOIN raw_business_data.objects o ON t.device_id = o.device_id
    JOIN raw_business_data.zones z ON
        -- Calculer si le point se trouve dans la zone circulaire
        -- Convertir les coordonnées d'entiers mis à l'échelle en décimal
        (
            CAS
                WHEN z.zone_type = 'circle' THEN
                    ST_DWithin(
                        ST_MakePoint(t.longitude::float/10000000, t.latitude::float/10000000)::geography,
                        ST_MakePoint(z.circle_center_longitude, z.circle_center_latitude)::geography,
                        z.radius
                    )
                SINON faux
            FIN
        )
OÙ
    t.device_time > (CURRENT_DATE - INTERVAL '1 day')
TRIER PAR
    z.zone_label, o.object_label, t.device_time;
```

{% hint style="info" %}
Cette requête utilise des fonctions spatiales PostGIS. Si vous rencontrez des erreurs, vérifiez que l’extension PostGIS est activée dans votre base de données.
{% endhint %}

## Conseils d’optimisation des performances

Lorsque vous travaillez avec l’entrepôt de données cloud, envisagez ces techniques d’optimisation :

1. **Utilisez un filtrage temporel** : incluez toujours un filtre temporel sur les `device_time` ou `record_added_at` colonnes afin de limiter les données analysées.\
   **Bonne pratique**:

```sql
SELECT * FROM raw_telematics_data.Suivi_data_core 
WHERE device_time > (CURRENT_DATE - INTERVAL '7 days');
```

**Évitez ceci** (parcourt toute la table)

```sql
SELECT * FROM raw_telematics_data.suivi_data_core;
```

2. **Tirer parti des index**: La base de données possède des index sur `(identifiant_appareil, heure_appareil)` paires. Structurez vos requêtes pour utiliser ces index lorsque cela est possible.
3. **Utilisez les jointures de manière sélective**: Joignez les tables uniquement lorsque c'est nécessaire et essayez de filtrer les données avant de joindre de grandes tables.
4. **Conversion entière de l’échelle**: N'oubliez pas que les données de coordonnées sont stockées sous forme d'entiers mis à l'échelle. Convertissez-les uniquement dans le SELECT final, pas dans les clauses WHERE.
5. **Limiter les ensembles de résultats**: Utilisez toujours LIMIT pour les requêtes exploratoires afin d'éviter de renvoyer des millions de lignes.

```sql
SELECT * FROM raw_telematics_data.Suivi_data_core 
WHERE device_time > (CURRENT_DATE - INTERVAL '1 day')
LIMIT 1000;
```

6. **Utiliser les relations hiérarchiques**: Structurez les requêtes complexes en suivant la hiérarchie des entités (**dealer → client → user/device → Traceur**) pour des jointures et un filtrage plus efficaces.
7. **Gérez correctement les connexions**: Fermez les connexions à la base de données lorsqu’elles ne sont pas utilisées, surtout dans les outils BI ou les scripts planifiés, afin d’éviter des problèmes de verrouillage des ressources ou de délai d’attente.

## Étapes suivantes

Ces exemples fournissent un point de départ pour travailler avec vos données. À mesure que vous vous familiariserez davantage avec le schéma, vous pourrez élaborer des requêtes plus complexes pour répondre à vos besoins métier spécifiques.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://navixy.com/docs/analytics/fr/example-queries/common-queries.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
