日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

[Mysql] FIRST_VALUE()函数 | LAST_VALUE()函数 | NTH_VALUE()函数

發布時間:2023/12/20 数据库 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [Mysql] FIRST_VALUE()函数 | LAST_VALUE()函数 | NTH_VALUE()函数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
美圖欣賞2022/06/04

窗口函數的基本語法

<窗口函數> OVER ([PARTITION BY <用于分組的列>] ORDER BY <用于排序的列>)

[]中的內容可以省略

注意:Mysql從8.0版本才開始支持窗口函數

數據導入

DROP TABLE IF EXISTS order_content; CREATE TABLE order_content( order_id VARCHAR(8), user_id VARCHAR(8), order_price INT, order_date DATE ) ENGINE = InnoDB DEFAULT CHARSET = utf8; INSERT INTO order_content (order_id,user_id,order_price,order_date) VALUE ('o001','u001',800,'2021-06-18') ,('o002','u001',800,'2021-06-19') ,('o003','u001',1000,'2021-06-22') ,('o004','u001',1200,'2021-06-24') ,('o005','u002',400,'2021-06-25') ,('o006','u002',1500,'2021-06-26') ,('o007','u002',2100,'2021-06-28') ,('o008','u003',900,'2021-07-01') ,('o009','u003',700,'2021-07-03') ,('o010','u003',1700,'2021-07-04');

order_content表?

1.FIRST_VALUE()函數

FIRST_VALUE()函數用于返回當前第一個值

SELECT *,FIRST_VALUE(order_price) OVER (PARTITION BY user_id ORDER BY order_price) AS firstvalue FROM order_content;

結果展示:

按照user_id字段進行分區,FIRST_VALUE()函數返回了每個分區的order_price字段的第一個值

2.LAST_VALUE()函數

LAST_VALUE()函數用于返回當前最后一個值

SELECT *,LAST_VALUE(order_price) OVER (PARTITION BY user_id ORDER BY order_price)AS lastvalue FROM order_content;

結果展示:

當前最后一個值即當前值,所以order_price和lastvalue字段的值相同

3.NTH_VALUE()函數

NTH_VALUE()函數用于返回有序行的第n小的值

SELECT *,NTH_VALUE(order_price,3) OVER (PARTITION BY user_id ORDER BY order_price)AS nthvalue FROM order_content;

結果展示:

NTH_VALUE()函數返回了每個分區第3小的數據,所以NTH_VALUE()函數通常用來求排在第n位的數據。例如,查詢部門薪資排在第2位的員工信息,而返回排在第n位的數據只需要在ORDER BY之后添加DESC

總結

以上是生活随笔為你收集整理的[Mysql] FIRST_VALUE()函数 | LAST_VALUE()函数 | NTH_VALUE()函数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。