adsb-1090/queries.sql

66 lines
1.8 KiB
SQL

-- Requêtes utiles pour explorer les données ADS-B
-- Base : wpz_postgres, schéma : adsb
-- Nombre de positions par jour (7 derniers jours)
SELECT
DATE_TRUNC('day', ts AT TIME ZONE 'Europe/Paris') AS jour,
COUNT(*) AS nb_positions,
COUNT(DISTINCT icao) AS nb_avions
FROM adsb.positions
WHERE ts >= NOW() - INTERVAL '7 days'
GROUP BY 1
ORDER BY 1 DESC;
-- Avions les plus vus aujourd'hui
SELECT
icao,
MAX(callsign) AS callsign,
COUNT(*) AS nb_positions,
MIN(altitude) AS alt_min,
MAX(altitude) AS alt_max,
ROUND(AVG(speed)) AS vitesse_moy,
MIN(ts) AS premiere_vue,
MAX(ts) AS derniere_vue
FROM adsb.positions
WHERE ts >= DATE_TRUNC('day', NOW() AT TIME ZONE 'Europe/Paris')
GROUP BY icao
ORDER BY nb_positions DESC
LIMIT 20;
-- Trajectoire d'un avion spécifique (remplacer l'ICAO)
SELECT ts, callsign, altitude, speed, track, lat, lon, vrate
FROM adsb.positions
WHERE icao = '440AF4'
AND ts >= NOW() - INTERVAL '24 hours'
ORDER BY ts;
-- Avions en dessous de 5000 ft (approche Orly/CDG)
SELECT DISTINCT ON (icao)
icao, callsign, altitude, speed, lat, lon, ts
FROM adsb.positions
WHERE ts >= NOW() - INTERVAL '1 hour'
AND altitude IS NOT NULL
AND altitude < 5000
ORDER BY icao, ts DESC;
-- Statistiques globales
SELECT
COUNT(*) AS total_positions,
COUNT(DISTINCT icao) AS avions_distincts,
MIN(ts) AS depuis,
MAX(ts) AS jusqua,
ROUND(AVG(altitude)) AS altitude_moyenne,
ROUND(AVG(speed)) AS vitesse_moyenne
FROM adsb.positions;
-- Taille des partitions
SELECT
c.relname AS partition,
pg_size_pretty(pg_relation_size(c.oid)) AS taille,
pg_size_pretty(pg_total_relation_size(c.oid)) AS taille_totale
FROM pg_class c
JOIN pg_namespace n ON n.oid = c.relnamespace
WHERE n.nspname = 'adsb'
AND c.relkind = 'r'
ORDER BY pg_relation_size(c.oid) DESC;