企业宣传网站公司,一般通过,阳西县网络问政新平台,超链接怎么做《SQL命令#xff08;含例句#xff09;精心整理版#xff08;2#xff09;》 跳转《SQL命令#xff08;含例句#xff09;精心整理版#xff08;1#xff09;8 函数8.1 文本处理函数8.2 数值处理函数8.3 时间处理函数8.3.1 时间戳转化为自定义格式from_unixtime8.3.2 … 《SQL命令含例句精心整理版2》 跳转《SQL命令含例句精心整理版18 函数8.1 文本处理函数8.2 数值处理函数8.3 时间处理函数8.3.1 时间戳转化为自定义格式from_unixtime8.3.2 转化时间格式CONVERT() 8.3.3 获取系统时间8.4 聚集函数aggregate functionCOALESCE 9 子查询9.1 子查询9.2 GROUP BY ORDER BY9.3 分组排序 row_number()over() 跳转《SQL命令含例句精心整理版1
8 函数
8.1 文本处理函数
函数说明LEFT()或使用子字符串函数 返回字符串左边的字符LENGTH()也使用DATALENGTH()或LEN() 返回字符串长度LOWER()Access使用LCASE() 将字符串转换为小写LTRIM()去掉字符串左边的空格RIGHT()或使用子字符串函数 返回字符串右边的字符RTRIM()去掉字符串右边的空格SOUNDEX()返回字符串的SOUNDEX值UPPER()Access使用UCASE() 将字符串转换成大写
8.2 数值处理函数
函数说明ABS()返回一个数的绝对值COS()返回一个角度的余弦EXP()返回一个数的指数值PI()返回圆周率SIN()返回一个角度的正弦SQRT()返回一个数的平方根TAN()返回一个角度的正切
8.3 时间处理函数
函数说明now()当前日期日期curdate()当前日期curtime当前时间时间差DATE_ADD() # 给日期添加指定的时间间隔DATE_SUB() # 给日期减去指定的时间间隔例如DATE_SUB(curdate(),INTERVAL 7 DAY) 当前日期减七天时间差函数timestampdiff语法 timestampdiffunitbeginendbegin和end可以为DATE或DATETIME类型并且可允许参数为混合类型。
8.3.1 时间戳转化为自定义格式from_unixtime
函数说明格式from_unixtime(timestamp(需要转化的时间戳),‘%Y-%m-%d %h:%i:%s’)%Y 年4位2023%y年2位23%M月名%m月数值(00-12)%D带有英文前缀的月中的天%d月的天数值(00-31)%H:%i:%s00:00:00
8.3.2 转化时间格式CONVERT()
函数说明格式CONVERT(expr,type)expr: 要转换的值type: 要转换为的数据类型DATE将expr转换成’YYYY-MM-DD’格式DATETIME将expr转换成’YYYY-MM-DD HHMMSS’格式TIME将expr转换成’HHMMSS’格式CHAR将expr转换成CHAR(固定长度的字符串)格式SIGNED将expr转换成INT(有符号的整数)格式UNSIGNED将expr转换成INT(无符号的整数)格式DECIMAL将expr转换成FLOAT(浮点数)格式BINARY将expr转换成二进制格式
8.3.3 获取系统时间
函数说明DBMS函数/变量AccessNOW()DB2CURRENT_DATEMySQLCURRENT_DATE()OracleSYSDATEPostgreSQLCURRENT_DATESQL ServerGETDATE()SQLiteDate(‘now’)
8.4 聚集函数aggregate function
函数说明AVG()返回某列的平均值COUNT()返回某列的行数MAX()返回某列的最大值MIN()返回某列的最小值SUN()返回某列值之和举例组合聚合函数SELECT COUNT(*) AS num_items, MIN(prod_price) AS price_min, MAX(prod_price) AS price_max, AVG(prod_price) AS price_avg FROM Products
COALESCE
按顺序对其参数求值并返回第一个非NULL值。仅当所有参数均为NULL时结果才为NULL。 为消息中可能不存在的字段提供缺省值。 表达式COALESCE(Body.Salary,0) ,如果消息中有SALARY字段,将返回它的值如果该字段不存在将返回0.
9 子查询
9.1 子查询
子句说明是否必须使用SELECT要返回的列或表达式是FROM从中检索数据的表仅在从表选择数据时使用WHERE行级过滤否GROUP BY分组说明仅在按组计算聚集时使用HAVING组级过滤否ORDER BY输出排序顺序否
9.2 GROUP BY ORDER BY 例1SELECT vend_id,count() AS num_prods FROM Products GROUP BY vend_id 例2SELECT cust_id,count() AS orders FROM Orders GROUP BY cust_id HAVING COUNT() 2
9.3 分组排序 row_number()over()
1对查询结果进行排序无分组
SELECT empno,WORKDEPT,SALARY,Row_Number() OVER (partition by workdept ORDER BY salary desc) rank FROM employeeempnoWORKDEPTSALARYRow_Number()000010A001527501000110A00665002000120A00492503200010A00465004200120A00392505000020B01942501000030C01982501000130C11738002
2对查询结果进行排序无分组
SELECT empno,WORKDEPT,SALARY,Row_Number() OVER (ORDER BY salary desc) rank FROM employeeempnoWORKDEPTSALARYRow_Number()000010A001527501000030C01982502000070D21961703000020B01942504000090E11897505000100E21861506000050E01801757000130C11738008000060D11722509
小结row_number() over()和rownum差不多功能更强一点。可以在各个分组内从1开始排序
3rank() over() 是跳跃排序有两个第二名时接下来就是第四名同样是在各个分组内
SELECT WORKDEPT,SALARY,rank() OVER (partition by workdept ORDER BY salary ) as dense_rank_order FROM emp order by workdeptWORKDEPTSALARYrank()A00392501A00465002A00492503A00665004A001527505B01942501C01684201C01684201C01738003
4dense_rank() over() 是连续排序有两个第二名时仍然跟着第三名。相比之下row_number是没有重复值的
SELECT WORKDEPT,SALARY,dense_rank() OVER (partition by workdept ORDER BY salary ) as dense_rank_order FROM emp order by workdeptWORKDEPTSALARYdense_rank()A00392501A00465002A00492503A00665004A001527505B01942501C01684201C01684201C01724202C01738003