mysql> SELECTval,ROW_NUMBER() OVER w AS 'row_number',CUME_DIST() OVER w AS 'cume_dist',PERCENT_RANK() OVER w AS 'percent_rank'FROM numbersWINDOW w AS (ORDER BY val);+------+------------+--------------------+--------------+| val | row_number | cume_dist | percent_rank |+------+------------+--------------------+--------------+| 1 | 1 | 0.2222222222222222 | 0 || 1 | 2 | 0.2222222222222222 | 0 || 2 | 3 | 0.3333333333333333 | 0.25 || 3 | 4 | 0.6666666666666666 | 0.375 || 3 | 5 | 0.6666666666666666 | 0.375 || 3 | 6 | 0.6666666666666666 | 0.375 || 4 | 7 | 0.8888888888888888 | 0.75 || 4 | 8 | 0.8888888888888888 | 0.75 || 5 | 9 | 1 | 1 |+------+------------+--------------------+--------------+
mysql> SELECTtime, subject, val,FIRST_VALUE(val) OVER w AS 'first',LAST_VALUE(val) OVER w AS 'last',NTH_VALUE(val, 2) OVER w AS 'second',NTH_VALUE(val, 4) OVER w AS 'fourth'FROM observationsWINDOW w AS (PARTITION BY subject ORDER BY timeROWS UNBOUNDED PRECEDING);+----------+---------+------+-------+------+--------+--------+| time | subject | val | first | last | second | fourth |+----------+---------+------+-------+------+--------+--------+| 07:00:00 | st113 | 10 | 10 | 10 | NULL | NULL || 07:15:00 | st113 | 9 | 10 | 9 | 9 | NULL || 07:30:00 | st113 | 25 | 10 | 25 | 9 | NULL || 07:45:00 | st113 | 20 | 10 | 20 | 9 | 20 || 07:00:00 | xh458 | 0 | 0 | 0 | NULL | NULL || 07:15:00 | xh458 | 10 | 0 | 10 | 10 | NULL || 07:30:00 | xh458 | 5 | 0 | 5 | 10 | NULL || 07:45:00 | xh458 | 30 | 0 | 30 | 10 | 30 || 08:00:00 | xh458 | 25 | 0 | 25 | 10 | 30 |+----------+---------+------+-------+------+--------+--------+
mysql> SELECTt, val,LAG(val) OVER w AS 'lag',LEAD(val) OVER w AS 'lead',val - LAG(val) OVER w AS 'lag diff',val - LEAD(val) OVER w AS 'lead diff'FROM seriesWINDOW w AS (ORDER BY t);+----------+------+------+------+----------+-----------+| t | val | lag | lead | lag diff | lead diff |+----------+------+------+------+----------+-----------+| 12:00:00 | 100 | NULL | 125 | NULL | -25 || 13:00:00 | 125 | 100 | 132 | 25 | -7 || 14:00:00 | 132 | 125 | 145 | 7 | -13 || 15:00:00 | 145 | 132 | 140 | 13 | 5 || 16:00:00 | 140 | 145 | 150 | -5 | -10 || 17:00:00 | 150 | 140 | 200 | 10 | -50 || 18:00:00 | 200 | 150 | NULL | 50 | NULL |+----------+------+------+------+----------+-----------+
mysql> SELECT n FROM fib ORDER BY n;+------+| n |+------+| 1 || 1 || 2 || 3 || 5 || 8 |+------+
mysql> SELECTn,LAG(n, 1, 0) OVER w AS 'lag',LEAD(n, 1, 0) OVER w AS 'lead',n + LAG(n, 1, 0) OVER w AS 'next_n',n + LEAD(n, 1, 0) OVER w AS 'next_next_n'FROM fibWINDOW w AS (ORDER BY n);+------+------+------+--------+-------------+| n | lag | lead | next_n | next_next_n |+------+------+------+--------+-------------+| 1 | 0 | 1 | 1 | 2 || 1 | 1 | 2 | 2 | 3 || 2 | 1 | 3 | 3 | 5 || 3 | 2 | 5 | 5 | 8 || 5 | 3 | 8 | 8 | 13 || 8 | 5 | 0 | 13 | 8 |+------+------+------+--------+-------------+
mysql> SELECTval,ROW_NUMBER() OVER w AS 'row_number',NTILE(2) OVER w AS 'ntile2',NTILE(4) OVER w AS 'ntile4'FROM numbersWINDOW w AS (ORDER BY val);+------+------------+--------+--------+| val | row_number | ntile2 | ntile4 |+------+------------+--------+--------+| 1 | 1 | 1 | 1 || 1 | 2 | 1 | 1 || 2 | 3 | 1 | 1 || 3 | 4 | 1 | 2 || 3 | 5 | 1 | 2 || 3 | 6 | 2 | 3 || 4 | 7 | 2 | 3 || 4 | 8 | 2 | 4 || 5 | 9 | 2 | 4 |+------+------------+--------+--------+
(rank - 1) (rows - 1)
mysql> SELECTval,ROW_NUMBER() OVER w AS 'row_number',RANK() OVER w AS 'rank',DENSE_RANK() OVER w AS 'dense_rank'FROM numbersWINDOW w AS (ORDER BY val);+------+------------+------+------------+| val | row_number | rank | dense_rank |+------+------------+------+------------+| 1 | 1 | 1 | 1 || 1 | 2 | 1 | 1 || 2 | 3 | 3 | 2 || 3 | 4 | 4 | 3 || 3 | 5 | 4 | 3 || 3 | 6 | 4 | 3 || 4 | 7 | 7 | 4 || 4 | 8 | 7 | 4 || 5 | 9 | 9 | 5 |+------+------------+------+------------+
文章转载自数据库杂货铺,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




