Tenir compte des données d'événements suivants d'une valeur de PostgreSQL 9.4:SQL pour la table de fréquence bidirectionnelle en utilisant une variable chaîne
eventTime | eventName
2015-09-25 18:00:00 | 'AAA'
2015-09-25 17:00:00 | 'BBB'
2015-09-25 16:00:00 | 'BBB'
2015-09-25 15:00:00 | 'BBB'
2015-09-25 14:00:00 | 'AAA'
2015-09-26 13:00:00 | 'CCC'
2015-09-26 12:00:00 | 'AAA'
2015-09-26 11:00:00 | 'BBB'
2015-09-26 10:00:00 | 'CCC'
2015-09-26 09:00:00 | 'BBB'
2015-09-27 08:00:00 | 'AAA'
2015-09-27 07:00:00 | 'CCC'
2015-09-27 05:00:00 | 'CCC'
2015-09-27 04:00:00 | 'CCC'
2015-09-27 03:00:00 | 'CCC'
2015-09-27 02:00:00 | 'AAA'
Bien que simples tables à base count()
sont simples, par exemple:
SELECT eventTime, count(1)
from (SELECT data->>'eventName' as eventName,
date_trunc('day', to_timestamp(data->>'timestamp','YYYY-MM-DDZHH24:MI:SS.MS')::timestamp without time zone) AS eventTime
FROM sidetrack where (data->>'eventName' = 'AAA') IS TRUE) AS tmptab
GROUP BY eventTime
ORDER BY eventTime ASC
Il est seulement possible de compter l'occurrence d'une seule valeur de eventName
. Je ne suis pas très expérimenté avec SQL et j'ai du mal à trouver un moyen de créer une table de fréquence bidirectionnelle. Dans cet exemple, le résultat serait:
day | 'AAA' | 'BBB' | 'CCC'
------------+-------+-------+-------
2015-09-25 | 2 | 3 | 0
2015-09-26 | 1 | 2 | 2
2015-09-27 | 2 | 0 | 4
Il existe des exemples où les variables avec des valeurs numériques sont comptées en utilisant with_bucket()
, mais ne généralise pas les champs contenant des chaînes.
J'ai essayé imbriquées sous WITH
, choisit comme:
WITH
foo AS (
SELECT ...
),
bar AS (
SELECT ...
FROM foo
),
SELECT *
FROM bar;
Et avec REJOINT extérieur, mais je ne peux pas casser cela.
Vos extraits de requête à partir des valeurs JSON , mais votre question ne mentionne même pas JSON. Veuillez clarifier et fournir la définition de la table et, comme toujours, votre version de Postgres. –
Bonjour Erwin, vous avez raison de dire que le fait que le texte soit extrait des clés JSON est indépendant du défi de la table de fréquence. Je fais du prototypage avec une table de test qui n'a pas JSON. J'ai utilisé le snippt avec le JSON comme exemple de travail. La version de Postgres est 9.4. Merci. – JohnH