Vertica 中的 GROUP_CONCAT

2023-12-19

假设我们有这样的数据:

    date    | campaign | raw | unq 
------------+----------+-----+-----
 2016-06-01 | camp1    |   5 |   1
 2016-06-01 | camp2    |  10 |   1
 2016-06-01 | camp3    |  15 |   2
 2016-06-02 | camp4    |   5 |   3
 2016-06-02 | camp1    |   5 |   1

我需要以这样的方式对其进行分组以获得以下结果:

    date    | campaigns           | raw  | unq 
------------+---------------------+----- +-----
 2016-06-01 | camp1, camp2, camp3 |   30 |   4
 2016-06-02 | camp4, camp1        |   10 |   4

出于这些目的,Mysql 有一个函数 GROUP_CONCAT。 Vertica还支持GROUP_CONCAT,但由于OVER子句和强制分区,我无法进行正确的查询


假设您已经编译并创建了该函数sdk/examples目录,您应该能够执行以下操作:

select date, sum(raw) "raw", sum(unq) unq, rtrim(agg_concatenate(campaign || ', '),', ')
from mytest
group by 1
order by 1

我使用 rtrim 去掉最后一个 ', '。

如果您还没有创建它,您可以这样做:

-- Shell commands
cd /opt/vertica/sdk/examples/AggregateFunctions/
g++ -D HAVE_LONG_INT_64 -I /opt/vertica/sdk/include -Wall -shared -Wno-unused-value -fPIC -o Concatenate.so Concatenate.cpp /opt/vertica/sdk/include/Vertica.cpp

-- vsql commands
CREATE LIBRARY AggregateFunctionsConcatenate AS '/opt/vertica/sdk/examples/AggregateFunctions/Concatenate.so';
CREATE AGGREGATE FUNCTION agg_concatenate AS LANGUAGE 'C++' NAME 'ConcatenateFactory' LIBRARY AggregateFunctionsConcatenate;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Vertica 中的 GROUP_CONCAT 的相关文章

  • groupconcat函数

    比如select group concat name MySQL中group concat函数 语法如下 xff1a group concat DISTINCT 要连接的字段 Order BY ASC DESC 排序字段 Separator
  • SQL中分组的一些用法group_concat

    分组查询 后面一篇文章我们将介绍MySQL的聚合函数 https blog csdn net qq 41453285 article details 88318318 group by通常与聚合函数放在一起使用 分组查询允许把数据分为多个逻
  • 在 PDO 查询上设置 group_concat_max_len

    我有以下查询 cases conn gt prepare SELECT GROUP CONCAT text SEPARATOR as texts year FROM cases GROUP BY year ORDER BY ano DESC
  • MySQL:对 GROUP_CONCAT 值进行排序

    简而言之 有什么方法可以对 GROUP CONCAT 语句中的值进行排序吗 Query GROUP CONCAT SELECT GROUP CONCAT parent name SEPARATOR raquo FROM test compe
  • MySQL:带有 ORDER BY COUNT 的 GROUP_CONCAT?

    这可能吗 假设我有一个地址列表 其中有很多重复的条目 我需要过滤掉所有重复项 因为有些地址的名称略有不同 但邮政编码和电话号码相同 首先 我对邮政编码和电话进行 GROUP BY SELECT name address postalcode
  • GROUP_CONCAT 更改 GROUP BY 顺序

    我有一个视图 很多连接 输出按日期 ASC 排序的数据 按预期工作 输出类似于 ID date tag1 other data 1 25 03 2011 blue fff lt 1 26 03 2011 red ggg 1 27 03 20
  • GROUP_CONCAT 编号

    是否可以在 GROUP CONCAT 中进行编号 like 如果 来自 GROUP CONCAT empnam SEPARATOR 我得到一套 lt JohnM DannyP TiffnyK KarlM gt 我需要有 lt 1 JohnM
  • 使用 FIRST_VALUE 而不在分组依据中包含内部列

    我正在使用一个看起来像这样的表 userID eventDate eventName 1 2019 01 01 buySoup 2 2019 01 01 buyEggs 2 2019 01 03 buyMilk 2 2019 01 04 b
  • Vertica 中的 GROUP_CONCAT

    假设我们有这样的数据 date campaign raw unq 2016 06 01 camp1 5 1 2016 06 01 camp2 10 1 2016 06 01 camp3 15 2 2016 06 02 camp4 5 3 2
  • MySQL GROUP_CONCAT 多个字段

    我可能正处于无脑时刻 我想使用 GROUP CONCAT 从数据库中的两个字段返回一系列数字 到目前为止我已经使用以下方法完成了此操作 SELECT t id CONCAT GROUP CONCAT DISTINCT s id IFNULL
  • 如何在 Vertica 中创建外部过程

    如何在 Vertica 中创建使用带有诸如以下子句的 SQL 的函数 过程FROM WHERE GROUP BY ORDER BY LIMIT etc 维蒂卡的create function语法禁止在语句中使用某些子句expression
  • 如何保存sql中的最后一个检查点以用于下一行

    有什么方法可以存储最后一次迭代的行结果并将其用于下一行迭代吗 例如我有一张桌子说 Time Table Key type timeStamp 1 1 B 2015 06 28 09 00 00 2 1 B 2015 06 28 10 00
  • SQL GROUP_CONCAT 拆分为不同的列

    我进行了很多搜索 但没有找到解决我的问题的正确方法 我想做什么 我在 MySQL 中有 2 个表 国家 货币 我通过 CountryCurrency 将它们加入到一起 gt 由于多对多的关系 请参阅此示例 http sqlfiddle co
  • 如何在 MySQL 的 CONCAT 中使用 GROUP_CONCAT

    如果我在 MySQL 中有一个包含以下数据的表 id Name Value 1 A 4 1 A 5 1 B 8 2 C 9 如何将其转换为以下格式 id Column 1 A 4 5 B 8 2 C 9 我想我必须使用GROUP CONCA
  • MySQL:GROUP_CONCAT 与 LEFT JOIN

    我在使用 MySQL 的 GROUP CONCAT 函数时遇到问题 我将使用一个简单的帮助台数据库来说明我的问题 CREATE TABLE Tickets id INTEGER NOT NULL PRIMARY KEY requester
  • 将 ODBC 应用程序与 JDBC 驱动程序结合使用

    我公司使用Vertica http www vertica com 我们有使用 pyodbc 连接到它的 Python 应用程序 我的大部分开发工作都是在 Mac Snow Leopard 上进行 不幸的是 Vertica 尚未发布适用于
  • 如何在单个 mysql 查询中连接多个关系表中的多个值

    我的 旅行优惠 项目有一个大问题 99 正常 但不是 100 我有一个包含报价的主表 其中每个报价可以设置多个部门城市以及多个目的地城市 这是减少列的减少样本 例如 我提供一些从英格兰出发的旅行 其中部门城市可以是伦敦 利兹和曼彻斯特 目的
  • 如何使用group-concat mysql创建json格式?

    如何使用group concat mysql创建json格式 我使用MySQL 示例1 table1 email name phone email protected cdn cgi l email protection Ben 65553
  • MySQL 和 GROUP_CONCAT() 最大长度

    我在用着GROUP CONCAT 在 MySQL 查询中将多行转换为单个字符串 但是 该函数结果的最大长度为1024人物 我很清楚我可以更改参数group concat max len增加此限制 SET SESSION group conc
  • JPA Criteria API group_concat 用法

    我目前正在编写一份报告 其中一个字段需要 group concat CriteriaQuery

随机推荐