rw202330 dias - no funciona perfecto
Updated 2023-12-24
99
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
›
⌄
WITH HourlyData AS (
SELECT
d.DATE_HOUR AS Hour,
p.CLOSE,
LAG(p.CLOSE, 1) OVER (ORDER BY d.DATE_HOUR) AS PreviousClose,
ROW_NUMBER() OVER (PARTITION BY DATE_TRUNC('day', d.DATE_HOUR) ORDER BY d.DATE_HOUR) AS HourlyRank -- Identifica la primera hora de cada día
FROM crosschain.core.dim_date_hours d
LEFT JOIN BITCOIN.price.fact_hourly_token_prices p ON d.DATE_HOUR = p.HOUR
WHERE d.DATE_HOUR >= DATEADD(day, -30, CURRENT_TIMESTAMP()) -- Filtra para los últimos 30 días
),
PercentChanges AS (
SELECT
Hour,
CASE WHEN HourlyRank = 1 THEN 0 ELSE (CLOSE - PreviousClose) / PreviousClose * 100 END AS PercentChange -- Excluye el primer dato del día
FROM HourlyData
WHERE PreviousClose IS NOT NULL -- Asegúrate de tener un precio previo para calcular el cambio porcentual
),
CumulativeSums AS (
SELECT
Hour,
SUM(CASE WHEN CONVERT_TIMEZONE('UTC', 'America/New_York', Hour)::time BETWEEN '08:00' AND '18:00' THEN PercentChange ELSE 0 END) OVER (ORDER BY Hour) AS CumulativeSumUS,
SUM(CASE WHEN CONVERT_TIMEZONE('UTC', 'Europe/Brussels', Hour)::time BETWEEN '08:00' AND '18:00' THEN PercentChange ELSE 0 END) OVER (ORDER BY Hour) AS CumulativeSumEU,
SUM(CASE WHEN CONVERT_TIMEZONE('UTC', 'Asia/Seoul', Hour)::time BETWEEN '08:00' AND '18:00' THEN PercentChange ELSE 0 END) OVER (ORDER BY Hour) AS CumulativeSumAPAC
FROM PercentChanges
)
SELECT
Hour,
CumulativeSumUS,
CumulativeSumEU,
CumulativeSumAPAC
FROM CumulativeSums
ORDER BY Hour;
QueryRunArchived: QueryRun has been archived