zoukankan      html  css  js  c++  java
  • presto 函数中使用子查询

    我们已知 在sql中子查询可以配合  in 或者 exists 来使用,但是如何把子查询的结果传给函数呢?

    场景:

    我们有一个  省份表  数据如下:

    id   province

    1    广东

    2   福建

    3   江西

    有一个分隔符表  数据如下:

    seperator

    ,

    -

    ...

    +

    要达到的目标是:一条sql实现省份按不同的分隔符做拼接。

    需要结果:
    广东,福建,江西
    广东-福建-江西
    广东...福建...江西
    广东+福建+江西

    我们先一条sql查出省份的顺序:

    select province from province_table;

    我们的按分隔符拼接字符串用array_join  sql:

    select array_join(['广东','福建','江西'],seperator) from seperator_table;

    但是我们不能直接把sql1作为array_join 的参数1传入,

    原因是函数里面传如子查询,等价于传入 子查询查出来 第一行第一个数据。

    所有我们借助 array_agg函数,该函数为聚合函数,可以把传如的结果都聚合为一个数组:

    select array_agg(province) from province_table;

    结果为:(结果为一行一列)

    ['广东','福建','江西']

    于是,我们最后的实现方式就可以是:

    select array_join((select array_agg(province) from province_table),seperator) from seperator_table;

    达到了“把结果转为数组传给函数使用”的效果。

  • 相关阅读:
    边学边收 代码
    VS2013无法链接到TFS (转)
    使用Spring MVC创建 REST API
    zookeeper的概念和基础
    使用Spring的HttpInvoker
    使用远程服务
    Spring MVC起步
    使用注解创建切面
    通过切点来选择连接点
    Spring实战之切面编程
  • 原文地址:https://www.cnblogs.com/chianquan/p/10250998.html
Copyright © 2011-2022 走看看