Maison >base de données >tutoriel mysql >Comment calculer un nombre de lignes en cours par minute dans PostgreSQL ?
PostgreSQL : nombre de lignes de résultats de requête par minute
Cet article décrit comment utiliser les fonctions de fenêtre dans PostgreSQL pour calculer le nombre de lignes en cours d'exécution de résultats de requête par minutes.
1. Nombre de lignes par minute
La requête suivante renvoie le nombre de lignes par minute :
<code class="language-sql">SELECT COUNT(id) AS count, EXTRACT(hour FROM "when") AS hour, EXTRACT(minute FROM "when") AS minute FROM mytable GROUP BY hour, minute;</code>
2. Nombre cumulé de lignes par minute
Pour calculer le nombre cumulé de lignes par minute, vous pouvez utiliser la requête suivante :
<code class="language-sql">SELECT DISTINCT date_trunc('minute', "when") AS minute, COUNT(*) OVER (ORDER BY date_trunc('minute', "when")) AS running_count FROM mytable ORDER BY minute;</code>
Instructions :
date_trunc('minute', "when")
Tronquez la colonne d'horodatage "quand" à la minute la plus proche. COUNT(*) OVER (ORDER BY date_trunc('minute', "when"))
Compte le nombre de lignes exécutées par minute. La clause ORDER BY
spécifie l'ordre des lignes agrégées. DISTINCT
est utilisé pour garantir que seules les minutes uniques sont renvoyées. En effet, la fonction d'agrégation COUNT
renverra plusieurs lignes pour la même minute. 3. Y compris les minutes sans activité
Si vous souhaitez inclure les minutes sans activité dans les résultats, vous pouvez utiliser la requête suivante :
<code class="language-sql">SELECT m.minute, COALESCE(SUM(c.minute_count) OVER (ORDER BY m.minute), 0) AS running_count FROM ( SELECT generate_series(MIN(minute), MAX(minute), INTERVAL '1 minute') AS minute FROM ( SELECT date_trunc('minute', "when") AS minute, COUNT(*) AS minute_count FROM mytable GROUP BY minute ) AS sub ) AS m LEFT JOIN ( SELECT date_trunc('minute', "when") AS minute, COUNT(*) AS minute_count FROM mytable GROUP BY minute ) AS c ON m.minute = c.minute ORDER BY m.minute;</code>
Instructions :
LEFT JOIN
pour inclure les minutes sans activité. generate_series()
La fonction génère une plage de minutes entre les minutes minimales et maximales du tableau. COALESCE()
garantit que les minutes sans activité ont un décompte de 0. Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!