熟悉的问题,但与Vertica.我想基于每个tag_id的sum(imps)返回前5个geo_country行.这是我开始的查询:
SELECT tag_id,
geo_country,
SUM(imps) AS imps,
RANK() OVER (PARTITION BY tag_id ORDER BY SUM(imps) DESC) AS rank
FROM table1
WHERE tag_id IN (2013150,1981153)
AND ymd > CURRENT_DATE - 3
GROUP BY 1,
2 LIMIT 10;
Run Code Online (Sandbox Code Playgroud)
这实际上只返回WHERE子句(2013150)中第一个标记的行.我知道另一个标签的sum(imps)值足够高,应该在结果中包含它.
另外,我如何实现前N部分?我尝试在OVER函数中添加LIMIT子句,但它看起来不像是一个可接受的参数.
使用vsql时,我想看看查询完成后运行多长时间.例如,当我运行:
select count(distinct key) from schema.table;
Run Code Online (Sandbox Code Playgroud)
我希望看到如下输出:
5678 (1 row) total query time: 55 seconds.
如果这是不可能的,还有另一种方法来衡量查询时间吗?
我有一个查询,该查询为我提供了两个日期start_date和end_date之间的COUNT,并按各个列进行了分组。有什么办法可以让我每天获得COUNT个?就像说start_date是date1和end_date是date5一样,因此我需要对“ date1到date2”,“ date1到date3”,“ date1到date4”,然后“ date1到date5”运行一次查询。是否像基于开始日期和结束日期多次运行同一查询?我的查询看起来像
Select COUNT(A), B, C, D
FROM TABLE
WHERE CONDITION1 AND DATE BETWEEN start_date AND end_date
GROUP BY B, C, D
Run Code Online (Sandbox Code Playgroud) 所以我需要在vertica数据库中插入一些值(通过vsql),它可能包含引号和各种特殊字符.但是vertica似乎并不理解字符转义.例如:
rpt=> select "asdasda\"asdasdad" from some_table limit 1;
rpt"> ";
ERROR: syntax error at or near "" from some_table limit 1;
"" at character 26
LINE 1: select "asdasda\"asdasdad" from some_table limit 1;
Run Code Online (Sandbox Code Playgroud)
这不是insert语句,但你应该明白这一点.
这是一个示例数据集:
ID Value
1 421
1 532
1 642
2 3413
2 0
2 5323
Run Code Online (Sandbox Code Playgroud)
我想要一个查询,在这种情况下,只对ID = 1求和,因为它的所有值都大于0.我不能使用一个WHERE声明,WHERE Value > 0因为那时ID = 2仍然会返回一个值.我觉得这可能是一个我可以使用OVER(PARTITION BY...)声明的实例,但我不够熟悉,不能创造性地使用它.
顺便说一句,我不是简单地添加一个WHERE ID = 1语句,因为这需要覆盖更大的数据集.
我正在尝试通过vsql使用-h参数指定主机 IP来连接到 Vertica 节点。但是,我想指定故障转移节点。
根据文档备份主机可以作为 JDBC 连接中的属性提供。
我如何通过 实现相同的功能vsql?