Récemment, PostgreSQL a été utilisé pour faire beaucoup de travail de traitement de données, et maintenant je vais trier les instructions SQL utilisées.
Table des matières
- créer une base de données
- créer un formulaire
- insérer des données
- sélectionner des données
- Plusieurs tables ne suppriment pas les associations en double
- Association et filtrage multi-tables
- Convertir le type de colonne
- NULL rempli de 0
- division équidistante du temps
- format de modification de l'heure
- créer un horodatage (séquence)
créer une base de données
CREATE DATABASE nom_table ;
créer un formulaire
CREATE table_name IF NOT EXISTS {} (horodatage, data int)
insérer des données
insérer dans les valeurs de table_name (%s, %s);
sélectionner des données
SELECT heure, données FROM nom_table
Plusieurs tables ne suppriment pas les associations en double
SÉLECTIONNER * À PARTIR de la table1UNION TOUSSELECT * FROM table2
UNION est une association haut-bas, qui fusionne les données de plusieurs tables, et elle est divisée en fusion de déduplication UNION et fusion de non-déduplication UNION ALL
Association et filtrage multi-tables
SÉLECTIONNERtemps, donnéesDEPUISTableau 1REJOINDRETableau 2SURtable1.id=table2.idOÙtable1.code dans ('999')
join est une association gauche-droite, liée à left right full, etc. on est une règle de jointure
où est une instruction conditionnelle
Convertir le type de colonne
alter TABLE table_name alter COLUMN col_name type int using col_name::int
convertit le type de la colonne col_name dans la table table_name en int
NULL rempli de 0
update table_name set col_name=coalesce(col_name, 0)
remplit le NULL dans la colonne col_name de la table table_name avec 0
division équidistante du temps
SELECT date_trunc('hour', time) + INTERVAL '2 minutes' * (floor(extract('minute' from time) / 2)) AS time_slot,sum(data) FROM table_name GROUP BY time_slot ORDER BY time_slot; table table_name
Selon à la colonne temps, regrouper et additionner toutes les 2 minutes et trier par temps
format de modification de l'heure
to_char(time, 'YYYY-MM-DD HH24:MI:00')::TIMESTAMP
après ::TIMESTAMP est facultatif, selon le format unifié de diverses données temporelles
créer un horodatage (séquence)
Dans la fusion multi-tables, il est généralement nécessaire de prendre en compte le manque de données, nous devons donc définir manuellement la colonne d'heure standard, afin que les lignes de données manquantes soient également affichées et ne soient pas affichées en raison de données manquantes.
SELECT '2023-06-09 08:00:00'::timestamp AS time
SELECT generate_series('2023-01-01 08:00'::timestamp, '2023-01-01 21:00'::timestamp, ' 10 minutes'::intervalle) Horodatage AS ;