【发布时间】:2025-12-17 01:10:01
【问题描述】:
我有 Vertica 数据库,其中包含许多带有日期(时间戳)和更多属性的记录。例如,'testTable' 看起来像
a varchar(255)
b int
timestamp bigint
我需要在一段时间内(比如 1 月 1 日至 1 月 15 日)每天查找前 10 个 sum(b),这些日期可以由用户指定。
迭代查询会是什么样子?粗略的方法可能是单独的 SELECT 语句,UNION ALL 介于两者之间。
select a, sum(b) from testTable where TO_TIMESTAMP( timestamp ) between '2012-01-01 05:10:00' and '2012-01-02 05:10:00' group by a order by sum(b) desc LIMIT 10
UNION ALL
select a, sum(b) from testTable where TO_TIMESTAMP( timestamp ) between '2012-01-02 05:10:00' and '2012-01-03 05:10:00' group by a order by sum(b) desc LIMIT 10
UNION ALL
select a, sum(b) from testTable where TO_TIMESTAMP( timestamp ) between '2012-01-03 05:10:00' and '2012-01-04 05:10:00' group by a order by sum(b) desc LIMIT 10
..
..
..
UNION ALL
select a, sum(b) from testTable where TO_TIMESTAMP( timestamp ) between '2012-01-14 05:10:00' and '2012-01-15 05:10:00' group by a order by sum(b) desc LIMIT 10 ;
但我希望它更通用,用户可以运行具有两个给定日期的脚本。
【问题讨论】:
-
谢谢。知道如何将相同的查询转换为 vSQL 语法。 Vertica 的变量声明似乎有所不同
标签: vertica