Для каждой минуты я хочу найти строки с помощью
Код: Выделить всё
percent_change_1h > 4 and percent_change_24h > 2;
Для определенной временной метки следующий запрос работает хорошо и делает то, что мне нужно:
Код: Выделить всё
SELECT * from (
SELECT cmc_id, symbol,
percent_change_1h, percent_change_24h, cmc_rank, market_cap,
timestamp
FROM table1.listings
WHERE timestamp = '2025-12-23 09:20:00' AND cmc_rank IS NOT NULL
ORDER BY percent_change_24h DESC
LIMIT 30
) as query1
WHERE percent_change_1h > 4 and percent_change_24h > 2;
На данный момент я почти достиг того, что мне нужно:
Код: Выделить всё
SELECT t.* from (
SELECT *,
ROW_NUMBER() over (partition by timestamp ORDER BY percent_change_24h DESC) AS seqnum
FROM table1.listings
WHERE timestamp >= '2025-12-23 09:20:00'
AND c_rank IS NOT NULL ORDER BY percent_change_24h DESC
) t
WHERE percent_change_1h > 4 and percent_change_24h > 2;
Я не могу использовать предложение LIMIT в разделе по. Таким образом, набор результатов возвращает слишком много данных.
В отчаянии я попытался использовать предложение LIMIT в другой позиции, но это слишком сильно ограничивает строки/неправильно, поскольку мне понадобится предложение LIMIT при разделении:
Код: Выделить всё
SELECT t.* from (
select *,
ROW_NUMBER() over (partition by timestamp ORDER BY percent_change_24h DESC) AS seqnum
FROM table1.listings
WHERE timestamp >= '2025-12-23 09:20:00'
AND c_rank IS NOT NULL ORDER BY percent_change_24h DESC LIMIT 30
) t
WHERE percent_change_1h > 4 and percent_change_24h > 2;
Спасибо!
Подробнее здесь: https://stackoverflow.com/questions/798 ... rtition-by
Мобильная версия