【问题标题】:How to Expand rows in SQL to analyse data counts如何在 SQL 中扩展行以分析数据计数
【发布时间】:2020-06-17 17:39:01
【问题描述】:

我有一个以下类型的表(我们称之为 MyTable):

 Name     | Date             | no_appointments    | Class |
----------+------------------+--------------------+-------+
 A        | 2019-04-01       | 2                  |   1   |
 B        | 2019-05-01       | 4                  |   0   |

我想通过重复每个行来扩展行,方法是 no_appointments 指定的次数(相当于 R 的 expandRows() 函数)。

我使用的是 PostgreSQL 12.1。

提前致谢!

【问题讨论】:

    标签: sql postgresql select


    【解决方案1】:

    使用generate_series():

    select t.*, n.n
    from t cross join lateral
         generate_series(1, t.no_appointments, 1) gs(n);
    

    实际上 Postgres 允许的语法为:

    select t.*, generate_series(1, t.no_appointments, 1) as n
    from t;
    

    但是,我不喜欢更改 select 子句中的行数。

    【讨论】:

      【解决方案2】:

      在 Postgres 中,您可以简单地使用 generate_series() 和横向连接:

      select t.*, x.i
      from mytable t
      cross join lateral generate_series(1, t.no_appointments) as x(i)
      

      结果集中的最后一列包含每一行的迭代次数。如果这对您来说不是一个明智的信息,您可以删除。

      【讨论】:

        猜你喜欢
        • 2021-09-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-11-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多