66 lines
1.8 KiB
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;
|