Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.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
Sql 用于从表中选择数值采样的Oracle查询_Sql_Oracle - Fatal编程技术网

Sql 用于从表中选择数值采样的Oracle查询

Sql 用于从表中选择数值采样的Oracle查询,sql,oracle,Sql,Oracle,我在Oracle DB表中有一个数据字段,其数据类型为NUMBER。我尝试了下面使用order by的查询 SELECT Value FROM Table ORDER BY value; 我得到的结果是 Value | ------| 1 | 1 | 2 | 2 | 3 | 3 | 4 | 4 | 5 | 5 | 6 | 6 | Value | ------| 1 | 2 |

我在Oracle DB表中有一个数据字段,其数据类型为NUMBER。我尝试了下面使用order by的查询

SELECT Value
  FROM Table
 ORDER BY value;
我得到的结果是

Value |
------|
1     |
1     |
2     |
2     |
3     |
3     |
4     |
4     |
5     |
5     |
6     |
6     |
Value |
------|
1     |
2     |
3     |
4     |
5     |
6     |
1     |
2     |
3     |
4     |
5     |
6     |
相反,我想要一个结果

Value |
------|
1     |
1     |
2     |
2     |
3     |
3     |
4     |
4     |
5     |
5     |
6     |
6     |
Value |
------|
1     |
2     |
3     |
4     |
5     |
6     |
1     |
2     |
3     |
4     |
5     |
6     |
1值-----1 | 1 | 2 | 2 | 3 | 4 | 5 | 6|

SELECT ROW_NUMBER() OVER (PARTITION BY VALUE ORDER BY VALUE) AS RN, TABLE  .* FROM TABLE   
2值-----1 | 2 | 3 | 4 | 5 | 6 | 1 | 2 | 3 | 4 | 5 | 6|

SELECT ROWNUM,TABLE.* FROM TABLE  
1值-----1 | 1 | 2 | 2 | 3 | 4 | 5 | 6|

SELECT ROW_NUMBER() OVER (PARTITION BY VALUE ORDER BY VALUE) AS RN, TABLE  .* FROM TABLE   
2值-----1 | 2 | 3 | 4 | 5 | 6 | 1 | 2 | 3 | 4 | 5 | 6|

SELECT ROWNUM,TABLE.* FROM TABLE  

请试试这个。我使用ROW_NUMBER()根据值的出现情况排列值

SELECT VALUE
FROM (
  SELECT VALUE
    , ROW_NUMBER() OVER (PARTITION BY VALUE ORDER BY VALUE ASC) RNK
  FROM MY_TABLE
)
ORDER BY RNK
  , VALUE;

请试试这个。我使用ROW_NUMBER()根据值的出现情况排列值

SELECT VALUE
FROM (
  SELECT VALUE
    , ROW_NUMBER() OVER (PARTITION BY VALUE ORDER BY VALUE ASC) RNK
  FROM MY_TABLE
)
ORDER BY RNK
  , VALUE;
您可以使用评估值的出现是第一个还是第二个,依此类推;基于此值,然后针对表中的值,按排序将完成此工作

例如:

/* a test case */
with someTable(value) as (
    select 1 from dual union all
    select 2 from dual union all
    select 3 from dual union all
    select 4 from dual union all
    select 5 from dual union all
    select 6 from dual union all
    select 1 from dual union all
    select 2 from dual union all
    select 3 from dual union all
    select 4 from dual union all
    select 5 from dual union all
    select 6 from dual 
)
/* the query */
select value
from someTable
order by row_number() over ( partition by value order by null), value
工作原理:

select value, row_number() over ( partition by value order by null) rowNumber
from someTable
order by row_number() over ( partition by value order by null), value
给出:

     VALUE  ROWNUMBER
---------- ----------
         1          1
         2          1
         3          1
         4          1
         5          1
         6          1
         1          2
         2          2
         3          2
         4          2
         5          2
         6          2
您可以使用评估值的出现是第一个还是第二个,依此类推;基于此值,然后针对表中的值,按排序将完成此工作

例如:

/* a test case */
with someTable(value) as (
    select 1 from dual union all
    select 2 from dual union all
    select 3 from dual union all
    select 4 from dual union all
    select 5 from dual union all
    select 6 from dual union all
    select 1 from dual union all
    select 2 from dual union all
    select 3 from dual union all
    select 4 from dual union all
    select 5 from dual union all
    select 6 from dual 
)
/* the query */
select value
from someTable
order by row_number() over ( partition by value order by null), value
工作原理:

select value, row_number() over ( partition by value order by null) rowNumber
from someTable
order by row_number() over ( partition by value order by null), value
给出:

     VALUE  ROWNUMBER
---------- ----------
         1          1
         2          1
         3          1
         4          1
         5          1
         6          1
         1          2
         2          2
         3          2
         4          2
         5          2
         6          2