亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MYSQL函數使用實例分析

發布時間:2022-05-05 10:31:02 來源:億速云 閱讀:133 作者:zzz 欄目:開發技術

這篇“MYSQL函數使用實例分析”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“MYSQL函數使用實例分析”文章吧。

MYSQL函數

1:聚合函數

聚合函數主要由:count,sum,min,max,avg,group_count()

重點說一下group_count()函數,首先根據group by指定的列進行分組,并且用分隔符分隔,將同一個分組中的值連接起來,返回一個字符串結果. 

格式 : group_count([distinct]字段名 [order by 排序字段 asc/desc] [separator '分隔符'])

說明:

      1:使用distinct可以排除重復值.
      2:如果需要對結果值進行排序,可以使用order by 子句.
      3:separator是一個字符串值,默認為逗號.

2:數學函數

1:ABS(x) 返回x的絕對值
2:CEIL(x)返回大于等于x的最小整數(向上取整)
3:FLOOR(x) 返回小于等于x的最大整數(向下取整)
4:GREATEST(expr1,expr2...)返回列表中的最大值
5:LEAST(expr1,expr2.....)返回列表的最小值
6:MAX(x) 返回字段x的最大值
7:MIN(x) 返回字段x的最小值
8:MOD(x,y) 返回x除以y以后的余數
9:PI()返回圓周率(3.141593)
10:POW(x,y) 返回x的y次方
11:RAND() 返回0到1的隨機數
12:ROUND(x) 返回離x最近的整數(遵循四舍五入)
13:ROUND(x,y) 返回指定位數的小數(遵循四舍五入)
14:TRUNCATE(x,y) 返回數值x保留到小數點后y位的值,(與ROUND最大的去區別是不會進行四舍五入)

2:字符串函數

1:char_length(s) 返回字符串s的字符數
2:character_length 返回字符串s的字符數
3:concat(s1,s2,s3) 字符串s1,s2等多個字符串合并為一個字符串
4:concat_ws(x,s1,s2..) 同concat(s1,s2,s3)函數,但是每個字符串之間要加上x,x可以是分隔符
5:field(s,s1,s2) 返回第一個字符串s在字符串列表(s1,s2..)中的位置
6:length() 返回的是字節數 mysql中utf-8的編碼 一個中文漢字是三個字節
7:ltrim(s) 去掉字符串s開始處的空格 去除左邊的空格  rtrim()去除右邊的空格 trim()去除兩邊的空格
8:mid(s,n,len) 從字符串s的n位置截取長度為len的子字符串同substring(s,n,len)
9:position(s1,in,s) 從字符串s中獲取s1的開始位置
10:replcae(s,s1,s2) 將字符串s2替代字符串s中的字符串s1
11:reverse(s) 將字符串s的順序反過來
12:right(s,n)返回字符串s的后n個字符(從右取n個字符)
13:strcmp(s1,s2) 比較字符串s1和s2,如果s1與s2相等返回0,如果s1>s2返回1 如果s1小于s2返回-1
14:substr(s,start,length) 從字符串s的start位置截取長度為length的子字符串
15:ucase(s) upper(s)將字符串轉換為大寫
16:lcase(s) lower(s) 將字符串轉換為小寫

3:日期函數

1:unix_timestamp() 返回1970-01-01 00:00:00 到當前毫秒值
2:unix_timestamp(date_string) 將指定日期轉換為毫秒值時間戳
3:from_unixtime(bigint unixtime,string-format) 將毫秒值時間戳轉為指定格式日期
4:curdate() 返回當前日期
5:current_date() 返回當前日期
6:current_timestamp() 返回當前日期和時間
7:datediff(d1,d2) 計算日期d1>d2之間間隔的天數  eg:datediff('2022-01-01','2022-02-01')
8:currtime() 返回當前時間 
9:date_format(d,f) 按照表達式f的要求顯示日期d

4:控制流函數

1:if(expr,v1,v2) 如果表達式expr成立,返回結果v1,否則返回結果v2
2:ifnull(v1,v2) 如果v1的值為null則返回v1,否則返回v2 
3:isnull(expression) 判斷表達式是否為null 
4:nullif(expr1,expr2)  比較兩個字符串 如果字符串expr1和expr2相等 返回null 否則返回expr1
5:case expression when condition1 then result1  when condition2 then result2 else result end 表示case函數開始,end表示函數結束,如果condition1成立則返回result1,如果condition2成立則返回result2,當全部不成立則返回result,而當有一個成立之后,后面的就不執行了.

5:窗口函數

mysql8.0新增的窗口函數又稱為開窗函數,非聚合窗口函數是相對于聚合函數來說,聚合函數是對一組數據計算后返回單個值(即分組),非聚合函數一次只會處理一行數據,窗口聚合函數在行記錄上計算某個字段的結果時,可將窗口范圍內的數據輸入到聚合函數中,并不改變行數

5.1 序號函數

可以實現分組排序,并添加序號

1: row_number()
2: rank()
3: dense_rank() 

寫法:select id,...,dense_rank() over(partition by dname order by salary desc) as rn from employee;

注意: 不加 partition by 表示全局排序

MYSQL函數使用實例分析

5.2 分布函數

1: percent_rank()
  用途:每行按照公式(rank-1)/(row-1)進行計算.其中rank為rank()函數產生的序號,row為當前窗口的記錄總行數
2: cume_dist()
  用途:分組內小于,等于當前rank值的行數/分組內總行數
  應用場景:查詢小于等于當前薪資的比例

寫法:select dname,ename,salary,cume_dist() over(order by salary) as rn1,
cume_dist() over(partition by dname order by salary) as rn2 from employe;

MYSQL函數使用實例分析

5.3 前后函數

1: lag(expr,n)
2: lead(expr,n)

用途:返回位于當前行的前n行(lag(exor,n))或后n行(lead(expr,n))的expr的值

應用場景:查詢前1名同學的成績和當前同學成績的差值 (當前行內可以有個上一行數據的某一字段值)

MYSQL函數使用實例分析

MYSQL函數使用實例分析

5.4 頭尾函數

1: first_value(expr)
2: last_value(expr)

用途:返回第一個(first_value(expr))或者最后一個(last_value(expr)) expr的值
應用場景:截止到當前,按照日期排序查詢第1個入職和最后一個入職員工的薪資

MYSQL函數使用實例分析

5.5 其他函數

1: nth_value(expr,n)
2: ntile(n)

用途:返回窗口中第n個expr的值,expr可以是表達式,也可以是列名
應用場景:截止到當前薪資,顯示每個員工的薪資中排名第二或者第三的薪資

MYSQL函數使用實例分析

MYSQL函數使用實例分析

5.6 開窗聚合函數

1: sum()
2: avg()
3: min()
4: max()

寫法:select id,...,sum(salary) over(partition by dname order by hiredate desc) as rn from employee;

每一行rn的數據是當期行和之前每一行的salary之和
如果沒有order by排序語句,默認把分組內的所有數據進行sum操作

MYSQL函數使用實例分析

以上就是關于“MYSQL函數使用實例分析”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

高雄市| 湖南省| 万源市| 枣阳市| 蒙阴县| 梅河口市| 建德市| 永和县| 贞丰县| 滁州市| 长泰县| 永登县| 府谷县| 高碑店市| 延津县| 特克斯县| 勃利县| 广安市| 贺兰县| 喀喇沁旗| 京山县| 普宁市| 沿河| 交城县| 榆社县| 桐庐县| 格尔木市| 沽源县| 丰台区| 镇巴县| 湘乡市| 丹东市| 宽城| 汉寿县| 昌江| 英山县| 沿河| 鹤壁市| 马边| 大渡口区| 托克托县|