Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在postgresql中拆分表_Sql_Postgresql - Fatal编程技术网

如何在postgresql中拆分表

如何在postgresql中拆分表,sql,postgresql,Sql,Postgresql,我得到了一个大约70000行的数据集,现在我想将这个表拆分为三行(代码第一次在SAS中应用,现在转移到postgresql),一行从1-5000,两行从5001-25000,最后一行是剩余的行,其中任何一行都没有重复的行。 比如: 最后,我想要三个表,其中包含我指定的确切行数(例如3rows-2rows-rest行),并且它们都是不同的。例如: 表1: 表2: +--------+-----+--------+-----+ | cst_id | age | salary | sex | +---

我得到了一个大约70000行的数据集,现在我想将这个表拆分为三行(代码第一次在SAS中应用,现在转移到postgresql),一行从1-5000,两行从5001-25000,最后一行是剩余的行,其中任何一行都没有重复的行。 比如:

最后,我想要三个表,其中包含我指定的确切行数(例如3rows-2rows-rest行),并且它们都是不同的。例如: 表1:

表2:

+--------+-----+--------+-----+
| cst_id | age | salary | sex |
+--------+-----+--------+-----+
|      4 |  51 |   5000 | M   |
|      5 |  26 |   6000 | F   |
+--------+-----+--------+-----+
表3:

 +--------+-----+--------+-----+
| cst_id | age | salary | sex |
+--------+-----+--------+-----+
|      6 |  28 |   7000 | F   |
|      7 |  39 |   8000 | M   |
+--------+-----+--------+-----+

如何使用postgresql完成此操作?

您可以将此过程作为一个函数拆分为多个步骤

  • 获取不同行的总数
  • 将该值除以3,并将该值存储为声明的变量(_size)
  • 创建表1、表2和表3
  • 在表1中插入限制(\u大小)
  • 插入具有限制(_size)的表_2中,其中id>表_1的最大id
  • 在表_3中插入限制(_size),其中id>表_2的最大id

  • 希望这会有所帮助。

    有一个窗口功能“NTILE”可以做到这一点:

    --添加列以帮助拆分
    创建临时表帮助\u表为
    选择*
    第(3)部分(按类别id订购)作为批次编号
    从你的桌子上

    将表_1创建为 从“帮助”表格中选择*,其中批次编号=1

    将表2创建为 从“帮助”表格中选择*,其中批次编号=2

    将表3创建为
    从“帮助”表格中选择*,其中批次编号=3

    问题是什么?@YahyaHussein如何使用postgresql完成上述拆分作业?我假设您只想选择一个具有不同行数和行号的集合,然后将其分块插入?@VaoTsun我已对其进行了编辑check@a_horse_with_no_name我已经编辑过了,请检查我喜欢这个功能
    +--------+-----+--------+-----+
    | cst_id | age | salary | sex |
    +--------+-----+--------+-----+
    |      4 |  51 |   5000 | M   |
    |      5 |  26 |   6000 | F   |
    +--------+-----+--------+-----+
    
     +--------+-----+--------+-----+
    | cst_id | age | salary | sex |
    +--------+-----+--------+-----+
    |      6 |  28 |   7000 | F   |
    |      7 |  39 |   8000 | M   |
    +--------+-----+--------+-----+