从Postgres中的分组行中选择值

一世

我在Postgres(9.2)中有一张表,看起来像这样:

id | code | year
 1 |  A   | 2014
 1 |  A   | 2015
 1 |  A   | 2016
 2 |  A   | 2014
 2 |  A   | 2015
 2 |  B   | 2016

我正在尝试根据id字段合并行我可以使用自联接来做到这一点,但是我试图避免尽可能两次扫描表(可能要扫描几百万行)。我想做这样的事情:

SELECT CASE year WHEN 2016 THEN code ELSE '' END AS code,
       CASE year WHEN 2015 THEN code ELSE '' END AS prev_code
FROM tbl
GROUP BY id
HAVING year = 2015 OR year = 2016

理想情况下,输出应如下所示:

code | prev_code
  A  |    A         (from id=1)
  B  |    A         (from id=2)

当我运行我提出的查询时,它告诉我year需要在group by或聚合函数中。互联网上有类似这样的查询示例,但它们似乎不适用于Postgres。任何想法如何在Postgres 9.2中做到这一点?

汤玛士

您可以为此使用滞后窗口功能

Select Z.Code, Z.PrevCode
From (
     Select Id, Code, Year
        , lag( Code, 1 ) Over ( Partition By Id Order By Year ) As PrevCode
     From tbl
     Where Year In(2016,2015)
     ) As Z
Where Z.Year = 2016

SQL Fiddle版本

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

根据一行中的值在r中的数据框中选择行

来自分类Dev

在Postgres中的JSONB字段中选择不为空的值

来自分类Dev

在pandas DataFrame中选择最接近零的行中的值

来自分类Dev

根据pandas列中的多个值从DataFrame中选择行

来自分类Dev

从每50行中选择5个值的总和,然后按总和分组

来自分类Dev

Postgres在OVER()函数中选择不同的值

来自分类Dev

从上一个日期中选择按值分组的行之间共享的所有值

来自分类Dev

在条件聚合中选择多个nth值分组-pandas

来自分类Dev

使用[Postgres]分组时选择常用值

来自分类Dev

从Postgres中的复合类型数组中选择

来自分类Dev

从数据框中选择/分组具有特定列最近值的行

来自分类Dev

根据重复的值从分组的数据框中选择行

来自分类Dev

根据某些文本/值从Selenium中的表中选择行

来自分类Dev

从分组对象中选择给定范围内的行

来自分类Dev

在熊猫中从多层分组中选择

来自分类Dev

从Postgres中的JSON数组中选择

来自分类Dev

从KDB中的混合类型行中选择值

来自分类Dev

从MySQL中选择行并使用MAX和MIN进行分组

来自分类Dev

使用Julia中的DataFramesMeta分组后/之后在DataFrame中选择行

来自分类Dev

如何从html中的表中选择行中的特定值

来自分类Dev

从每50行中选择5个值的总和,然后按总和分组

来自分类Dev

在分组依据中选择其他列值

来自分类Dev

从表中选择取决于行值

来自分类Dev

从一行中的不同行中选择值

来自分类Dev

在 Postgres 中,如何从表中选择最近日期的行?

来自分类Dev

从每个分组的 Spark 数据框中选择特定行

来自分类Dev

从 Postgres JSONB 字段中选择缺失值

来自分类Dev

从选择 postgres 中选择

来自分类Dev

Postgres - 在从表中选择值时在 INSERT INTO 查询中插入时间戳?

Related 相关文章

  1. 1

    根据一行中的值在r中的数据框中选择行

  2. 2

    在Postgres中的JSONB字段中选择不为空的值

  3. 3

    在pandas DataFrame中选择最接近零的行中的值

  4. 4

    根据pandas列中的多个值从DataFrame中选择行

  5. 5

    从每50行中选择5个值的总和,然后按总和分组

  6. 6

    Postgres在OVER()函数中选择不同的值

  7. 7

    从上一个日期中选择按值分组的行之间共享的所有值

  8. 8

    在条件聚合中选择多个nth值分组-pandas

  9. 9

    使用[Postgres]分组时选择常用值

  10. 10

    从Postgres中的复合类型数组中选择

  11. 11

    从数据框中选择/分组具有特定列最近值的行

  12. 12

    根据重复的值从分组的数据框中选择行

  13. 13

    根据某些文本/值从Selenium中的表中选择行

  14. 14

    从分组对象中选择给定范围内的行

  15. 15

    在熊猫中从多层分组中选择

  16. 16

    从Postgres中的JSON数组中选择

  17. 17

    从KDB中的混合类型行中选择值

  18. 18

    从MySQL中选择行并使用MAX和MIN进行分组

  19. 19

    使用Julia中的DataFramesMeta分组后/之后在DataFrame中选择行

  20. 20

    如何从html中的表中选择行中的特定值

  21. 21

    从每50行中选择5个值的总和,然后按总和分组

  22. 22

    在分组依据中选择其他列值

  23. 23

    从表中选择取决于行值

  24. 24

    从一行中的不同行中选择值

  25. 25

    在 Postgres 中,如何从表中选择最近日期的行?

  26. 26

    从每个分组的 Spark 数据框中选择特定行

  27. 27

    从 Postgres JSONB 字段中选择缺失值

  28. 28

    从选择 postgres 中选择

  29. 29

    Postgres - 在从表中选择值时在 INSERT INTO 查询中插入时间戳?

热门标签

归档