我有一个疑问:
SELECT * FROM price_events
WHERE code='BCI.AX' AND date BETWEEN (now() - interval '1 month') AND now()
ORDER BY date DESC;
这可能会返回数百行。我想提炼下来说,10 行,均匀分布。做这个的最好方式是什么?
一种方法是使用行号技巧来识别每n
一步出现的记录,比如 10 步。我们可以检查行号是否是步长的倍数,如果是,则保留该记录。
WITH cte AS (
SELECT *,
ROW_NUMBER() OVER (ORDER BY date DESC) rn
FROM price_events
WHERE code='BCI.AX' AND date BETWEEN (NOW() - INTERVAL '1 month') AND NOW()
)
SELECT *
FROM cte
WHERE rn % ((SELECT COUNT(*) FROM cte) / 10) = 0
ORDER BY date DESC
LIMIT 10;
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句