sql有哪些函數
① SQL常用經典函數大全
SQL常用經典函數主要包括以下幾類:
一、字元串處理函數 SUBSTR:截取字元串的子串。 CONCAT:合並字元串。 UPPER:將字元串轉換為大寫。 LOWER:將字元串轉換為小寫。 LENGTH:測量字元串的長度。 TRIM:刪除字元串兩端的空格。 REPLACE:替換字元串中的特定字元。
二、數值處理函數 ROUND:對數值進行四捨五入。 ABS:獲取數值的絕對值。 TRUNCATE:精確到指定的小數位。
三、日期和時間處理函數 DATE_FORMAT:格式化日期。 NOW:獲取當前的日期和時間。 DATE_ADD:在日期上加上指定的時間間隔。 DATE_SUB:在日期上減去指定的時間間隔。 DATEDIFF:計算兩個日期之間的天數差。 EXTRACT:提取日期中的特定部分。 STR_TO_DATE:將字元串轉換為日期。 CONVERT:用於日期或其他數據類型的轉換。
四、統計和聚合函數 COUNT:統計非空值的數量。 SUM:計算數值的總和。 AVG:計算數值的平均值。 MAX:找出數值中的最大值。 MIN:找出數值中的最小值。 GROUP_CONCAT:將分組後的值連接成一個字元串。
五、條件判斷函數 COALESCE:返回第一個非NULL的值。 NULLIF:如果兩個值相等,則返回NULL,否則返回第一個值。 CASE WHEN:實現復雜的條件判斷邏輯。 IFNULL:如果值為NULL,則返回指定的值。
六、其他函數 RAND:生成隨機數。 INET_ATON:將IPv4地址轉換為數字表示。 INET_NTOA:將數字表示的IPv4地址轉換回點分十進製表示。
這些函數在SQL查詢中發揮著重要作用,能夠幫助你高效地處理和操作資料庫中的數據。熟練掌握這些函數將極大提升你的SQL編程能力。
② SQL中累計求和與滑動求和函數sum() over()用法
在SQL中,sum()函數的擴展功能——窗口函數sum() over()提供了三種主要用法:分組求和、累計求和和滑動求和。讓我們通過實例來理解這些場景的實現方式。
首先,以數據表dws_js_team_gmv為例,包含團隊名、月份和成交額欄位。我們來看三種求和需求的SQL代碼:
1. 要求是計算每個銷售團隊的年累計成交額及其對累計值的貢獻佔比,這可以通過分組求和並保留當前行數實現,SQL代碼如下:
SQL邏輯:
SQL跑數結果:
2. 對於逐月累計業績,從1月開始,同樣需要分組求和並保留當前行,代碼如下:
SQL邏輯:
SQL跑數結果:
3. 接下來是近3個月的累計業績(包括統計月)。這里涉及到滑動求和,用window函數over()設置滑動范圍,例如范圍從當前行前2行到當前行,代碼示例:
SQL邏輯:
對於不包含統計月的近3個月累計業績,有三種處理方法:
① 通過減去統計月的值,計算近4個月的滑動求和:range between 2 preceding and 0 following 或 2 preceding and current row
② 調整滑動區間為3個前一月到前兩個前一月:range between 3 preceding and 1 preceding
③ 或者調整為3個前一月到後一個前一月:range between 3 preceding and -1 following
這些SQL代碼展示了sum() over()函數在不同場景下的應用,幫助我們靈活處理累計和滑動求和需求。