Skip to content

适用虚谷数据库版本

v12.9



适用虚谷数据库版本

v12.9


NTILE

📄字数 636
👁️阅读量 加载中...

功能描述

将有序数据集划分为 expr1 个行数尽可能相等的组,并为每组分配一个组号,组号从 1expr1,每个组行数相差不超过 1

语法格式

sql
NTILE (expr1) OVER ([analytic_clause])

输入参数

  • expr1:列名或表达式,用来指定输入数据。
  • OVER ([analytic_clause]):可选的分析子句,支持分组子句,排序子句以及范围子句,详情见analytic_clause

输出结果

INTEGER 数值类型,输入参数不能为 NULL,否则报错。

示例

sql
-- 建表并插入数据
SQL> CREATE TABLE emp (
         empno INT PRIMARY KEY,
         ename VARCHAR(10),
         deptno INT,
         sal DECIMAL(10,2),
         hiredate DATE
     );

SQL> INSERT INTO emp VALUES
     (7369, 'SMITH', 20, 800, '1980-12-17'),
     (7499, 'ALLEN', 30, 1600, '1981-02-20'),
     (7521, 'WARD', 30, 1250, '1981-02-22'),
     (7566, 'JONES', 20, 2975, '1981-04-02'),
     (7654, 'MARTIN', 30, 1250, '1981-09-28');

-- 返回行所在的组
SQL> SELECT empno, ename, deptno, sal, NTILE(3) OVER (PARTITION BY deptno ORDER BY sal DESC)  FROM emp;

+-------+--------+--------+------+-------+
| EMPNO | ENAME  | DEPTNO | SAL  | EXPR1 |
+-------+--------+--------+------+-------+
| 7566  | JONES  | 20     | 2975 | 1     |
| 7369  | SMITH  | 20     | 800  | 2     |
| 7499  | ALLEN  | 30     | 1600 | 1     |
| 7521  | WARD   | 30     | 1250 | 2     |
| 7654  | MARTIN | 30     | 1250 | 3     |
+-------+--------+--------+------+-------+