WITH cte AS(
    SELECT 
        DISTINCT date_format(from_unixtime(transaction_ts),'%Y-%m-%dT%H') AS HourlyBucket, 
        RANK() OVER(PARTITION BY (date_format(from_unixtime(transaction_ts),'%Y-%m-%dT%H')), symbol, type ORDER BY dollar_amount DESC) AS ranking,
        transaction_ts, 
        symbol, 
        price, 
        amount, 
        dollar_amount, 
        type, 
        trans_id, 
        year, 
        month, 
        day, 
        hour
    FROM "datalake_raw_613161579745_rc_1201682"."crawler_stockdata"
    ORDER BY HourlyBucket
)
SELECT 
    HourlyBucket, 
    ranking, 
    transaction_ts, 
    symbol, 
    price, 
    amount, 
    dollar_amount, 
    type, 
    trans_id, 
    year, 
    month, 
    day, 
    hour
FROM cte
WHERE ranking = 1
ORDER BY HourlyBucket, symbol, type