SQL 函数概述

SQL 函数概述

SQL 函数可以分为几大类,不同数据库系统可能有略微不同的实现。以下是主要的 SQL 函数分类:

1. 聚合函数 (Aggregate Functions)

  • COUNT() - 计算行数

  • SUM() - 计算总和

  • AVG() - 计算平均值

  • MIN() - 找最小值

  • MAX() - 找最大值

  • GROUP_CONCAT() (MySQL) / STRING_AGG() (SQL Server, PostgreSQL) - 连接字符串

  • STDDEV() / STDDEV_POP() - 计算标准差

  • VARIANCE() / VAR_POP() - 计算方差

2. 标量函数 (Scalar Functions)

字符串函数

  • CONCAT() - 连接字符串

  • SUBSTRING() / SUBSTR() - 提取子字符串

  • TRIM() - 去除空格

  • UPPER() / UCASE() - 转为大写

  • LOWER() / LCASE() - 转为小写

  • LENGTH() / LEN() - 字符串长度

  • REPLACE() - 替换字符串

  • LEFT() / RIGHT() - 获取左/右部分字符串

数学函数

  • ABS() - 绝对值

  • ROUND() - 四舍五入

  • CEIL() / CEILING() - 向上取整

  • FLOOR() - 向下取整

  • MOD() - 取模

  • POWER() / POW() - 幂运算

  • SQRT() - 平方根

  • RAND() - 随机数

日期和时间函数

  • NOW() / CURRENT_TIMESTAMP - 当前日期时间

  • CURDATE() / CURRENT_DATE - 当前日期

  • CURTIME() / CURRENT_TIME - 当前时间

  • DATE() - 提取日期部分

  • TIME() - 提取时间部分

  • YEAR() / MONTH() / DAY() - 提取年/月/日

  • DATEDIFF() - 计算日期差

  • DATE_ADD() / DATE_SUB() - 日期加减

  • DAYNAME() / MONTHNAME() - 获取星期/月份名称

转换函数

  • CAST() - 类型转换

  • CONVERT() - 类型转换

  • COALESCE() - 返回第一个非NULL值

  • NULLIF() - 两值相等返回NULL

条件函数

  • CASE WHEN...THEN...ELSE...END - 条件表达式

  • IF() (MySQL) - 简单条件判断

  • IIF() (SQL Server) - 简单条件判断

  • DECODE() (Oracle) - 值匹配判断

3. 窗口函数 (Window Functions)

  • ROW_NUMBER() - 行号

  • RANK() - 排名(有间隔)

  • DENSE_RANK() - 排名(无间隔)

  • NTILE() - 分组排名

  • LEAD() / LAG() - 访问前后行数据

  • FIRST_VALUE() / LAST_VALUE() - 窗口首/尾值

  • PERCENT_RANK() - 百分比排名

  • CUME_DIST() - 累积分布

4. 系统函数

  • USER() / CURRENT_USER - 当前用户

  • DATABASE() - 当前数据库

  • VERSION() - 数据库版本

  • LAST_INSERT_ID() (MySQL) - 最后插入的ID


    完整的SQL函数分类及使用示例

  • 一、聚合函数 (Aggregate Functions)

    1. COUNT()

    sql

    -- 计算所有行数
    SELECT COUNT(*) FROM products;-- 计算特定列非NULL值
    SELECT COUNT(product_name) FROM products;-- 计算不同值的数量
    SELECT COUNT(DISTINCT category_id) FROM products;

    2. SUM()

    sql

    -- 计算总和
    SELECT SUM(quantity) FROM inventory;-- 带条件的求和
    SELECT SUM(price) FROM orders WHERE order_date > '2023-01-01';

    3. AVG()

    sql

    -- 计算平均值
    SELECT AVG(rating) FROM product_reviews;-- 结合ROUND函数
    SELECT ROUND(AVG(salary), 2) FROM employees;

    4. MIN()/MAX()

    sql

    复制

    -- 最小值和最大值
    SELECT MIN(price), MAX(price) FROM products;-- 日期最值
    SELECT MIN(hire_date), MAX(hire_date) FROM employees;

    5. GROUP_CONCAT()/STRING_AGG()

    sql

    -- MySQL
    SELECT department_id, GROUP_CONCAT(employee_name SEPARATOR '; ') 
    FROM employees GROUP BY department_id;-- SQL Server/PostgreSQL
    SELECT department_id, STRING_AGG(employee_name, '; ') 
    FROM employees GROUP BY department_id;

    6. STDDEV()/VARIANCE()

    sql

    -- 标准差和方差
    SELECT STDDEV(salary), VARIANCE(salary) FROM employees;

    二、标量函数 (Scalar Functions)

    字符串函数

    1. CONCAT()

    sql

    SELECT CONCAT(first_name, ' ', last_name) AS full_name FROM customers;
    2. SUBSTRING()/SUBSTR()

    sql

    SELECT SUBSTRING('Database', 1, 4); -- 返回'Data'
    SELECT SUBSTR(email, 1, POSITION('@' IN email)-1) AS username FROM users;
    3. TRIM()

    sql

    SELECT TRIM('   SQL   '); -- 返回'SQL'
    SELECT TRIM(BOTH 'x' FROM 'xxSQLxx'); -- 返回'SQL'
    4. UPPER()/LOWER()

    sql

    SELECT UPPER('Hello'); -- 'HELLO'
    SELECT LOWER('SQL');   -- 'sql'
    5. LENGTH()/LEN()

    sql

    -- MySQL/PostgreSQL
    SELECT LENGTH('SQL'); -- 3-- SQL Server
    SELECT LEN('SQL');    -- 3
    6. REPLACE()

    sql

    SELECT REPLACE('Hello World', 'World', 'SQL'); -- 'Hello SQL'
    7. LEFT()/RIGHT()

    sql

    SELECT LEFT('Database', 4); -- 'Data'
    SELECT RIGHT('Database', 3); -- 'ase'

    数学函数

    1. ABS()

    sql

    SELECT ABS(-15); -- 15
    2. ROUND()

    sql

    SELECT ROUND(123.4567, 2); -- 123.46
    3. CEIL()/CEILING()/FLOOR()

    sql

    SELECT CEIL(123.45);  -- 124
    SELECT FLOOR(123.45); -- 123
    4. MOD()

    sql

    SELECT MOD(10, 3); -- 1 (10除以3的余数)
    5. POWER()/POW()

    sql

    SELECT POWER(2, 3); -- 8 (2的3次方)
    6. SQRT()

    sql

    SELECT SQRT(25); -- 5
    7. RAND()

    sql

    -- 生成0-1之间的随机数
    SELECT RAND();-- 生成1-100的随机整数(MySQL)
    SELECT FLOOR(1 + RAND() * 100);

    日期和时间函数

    1. NOW()/CURRENT_TIMESTAMP

    sql

    SELECT NOW(); -- 返回当前日期时间 '2023-10-25 15:30:45'
    2. CURDATE()/CURRENT_DATE

    sql

    SELECT CURDATE(); -- '2023-10-25'
    3. CURTIME()/CURRENT_TIME

    sql

    SELECT CURTIME(); -- '15:30:45'
    4. DATE()/TIME()

    sql

    SELECT DATE('2023-10-25 15:30:45'); -- '2023-10-25'
    SELECT TIME('2023-10-25 15:30:45'); -- '15:30:45'
    5. YEAR()/MONTH()/DAY()

    sql

    SELECT YEAR('2023-10-25'); -- 2023
    SELECT MONTH('2023-10-25'); -- 10
    SELECT DAY('2023-10-25'); -- 25
    6. DATEDIFF()

    sql

    -- MySQL
    SELECT DATEDIFF('2023-12-31', '2023-10-25'); -- 67-- SQL Server
    SELECT DATEDIFF(day, '2023-10-25', '2023-12-31');
    7. DATE_ADD()/DATE_SUB()

    sql

    -- MySQL
    SELECT DATE_ADD('2023-10-25', INTERVAL 7 DAY); -- '2023-11-01'-- SQL Server
    SELECT DATEADD(day, 7, '2023-10-25');
    8. DAYNAME()/MONTHNAME()

    sql

    SELECT DAYNAME('2023-10-25'); -- 'Wednesday'
    SELECT MONTHNAME('2023-10-25'); -- 'October'

    转换函数

    1. CAST()/CONVERT()

    sql

    SELECT CAST('123' AS SIGNED); -- 字符串转整数
    SELECT CONVERT('2023-10-25', DATE); -- 字符串转日期
    2. COALESCE()

    sql

    SELECT COALESCE(NULL, NULL, 'SQL', NULL, 'Example'); -- 'SQL'
    3. NULLIF()

    sql

    SELECT NULLIF(10, 10); -- NULL
    SELECT NULLIF(10, 20); -- 10

    条件函数

    1. CASE WHEN

    sql

    SELECT product_id,price,CASE WHEN price > 100 THEN 'Expensive'WHEN price > 50 THEN 'Moderate'ELSE 'Cheap'END AS price_category
    FROM products;
    2. IF() (MySQL)

    sql

    SELECT IF(1 > 0, 'True', 'False'); -- 'True'
    3. IIF() (SQL Server)

    sql

    SELECT IIF(1 > 0, 'True', 'False'); -- 'True'
    4. DECODE() (Oracle)

    sql

    SELECT DECODE(status, 1, 'Active', 0, 'Inactive', 'Unknown') FROM users;

    三、窗口函数 (Window Functions)

    1. ROW_NUMBER()

    sql

    SELECT employee_id,salary,ROW_NUMBER() OVER (ORDER BY salary DESC) AS rank
    FROM employees;

    2. RANK()/DENSE_RANK()

    sql

    SELECT product_id,sales,RANK() OVER (ORDER BY sales DESC) AS rank,DENSE_RANK() OVER (ORDER BY sales DESC) AS dense_rank
    FROM products;

    3. NTILE()

    sql

    SELECT customer_id,total_purchases,NTILE(4) OVER (ORDER BY total_purchases DESC) AS quartile
    FROM customers;

    4. LEAD()/LAG()

    sql

    SELECT date,revenue,LAG(revenue, 1) OVER (ORDER BY date) AS prev_day_revenue,LEAD(revenue, 1) OVER (ORDER BY date) AS next_day_revenue
    FROM daily_sales;

    5. FIRST_VALUE()/LAST_VALUE()

    sql

    SELECT department_id,employee_id,salary,FIRST_VALUE(employee_id) OVER (PARTITION BY department_id ORDER BY salary DESC) AS highest_paid
    FROM employees;

    6. PERCENT_RANK()/CUME_DIST()

    sql

    SELECT student_id,score,PERCENT_RANK() OVER (ORDER BY score) AS percentile,CUME_DIST() OVER (ORDER BY score) AS cumulative_dist
    FROM exam_results;

    四、系统函数

    1. USER()/CURRENT_USER

    sql

    SELECT USER(); -- 'root@localhost'

    2. DATABASE()

    sql

    SELECT DATABASE(); -- 返回当前数据库名

    3. VERSION()

    sql

    SELECT VERSION(); -- '8.0.26'

    4. LAST_INSERT_ID() (MySQL)

    sql

    -- 获取最后插入的自动增量ID
    SELECT LAST_INSERT_ID();

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/77192.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL学习笔记九

第十一章使用数据处理函数 11.1函数 SQL支持函数来处理数据但是函数的可移植性没有SQL强。 11.2使用函数 11.2.1文本处理函数 输入: SELECT vend_name,UPPER(vend_name) AS vend_name_upcase FROM vendors ORDER BY vend_name; 输出: 说明&#…

认识vue中的install和使用场景

写在前面 install 在实际开发中如果你只是一个简单的业务实现者,那么大部分时间你是用不到install的,因为你用到的基本上都是别人封装好的插件、组件、方法、指令等等,但是如果你需要给公司的架构做建设,install就是你避不开的一个…

【SpringCloud】构建分布式系统的利器

一、引言 在当今数字化时代,随着业务规模的不断扩大和用户量的急剧增长,单体应用逐渐暴露出诸多局限性,如可扩展性差、维护困难等。分布式系统应运而生,而 Spring Cloud 则成为了构建分布式系统的热门框架之一。它提供了一系列丰…

mkdir通配符详解

在 mkdir 命令中使用通配符可以简化批量创建目录的操作。通配符如 {} 和 * 可以用来生成多个目录名称,从而减少重复输入。以下是一些常见的使用方法和示例。 使用 {} 通配符 {} 通配符可以用来生成一系列的目录名称,语法如下: mkdir dir_{…

Transformer的Word Embedding

一、Transformer 中的词嵌入是什么? 1. 定义与作用 • 词嵌入(Word Embedding):将离散的词语映射为低维连续向量,捕捉语义和语法信息。 • 在 Transformer 中的位置: • 输入层:每个词通过嵌入…

Linux 进程间通信:信号机制

Linux 进程间通信:信号机制 在多进程操作系统中,进程之间的通信至关重要,尤其是在Linux系统中,信号(Signal)作为一种特殊的进程间通信方式,广泛用于进程之间的协调和控制。信号可以看作是操作系…

基于TRIZ创新方法论的九屏法分析系统

1. 文件头与库导入 # -*- coding: utf-8 -*- import streamlit as st import pandas as pd import numpy as np import plotly.graph_objects as go from datetime import datetime from sklearn.ensemble import RandomForestRegressor ​​作用​​:设置文件编码…

【LangChain框架组成】 LangChain 技术栈的模块化架构解析

目录 整体架构概述 整体架构层级划分 模块详细解析 1. 部署与服务层(LangServe & Deployments) 2. 应用模板层(Templates & Committee Architectures) 3. 核心功能层(LangChain) 4. 社区扩展…

自定义数据结构的QVariant序列化 ASSERT failure in QVariant::save: “invalid type to save“

自定义数据结构放入QVariant,在序列化时抛出异常 ASSERT failure in QVariant::save: “invalid type to save” 自定义数据结构如struct MyData,除了要在结构体后面加 struct MyData { ... } Q_DECLARE_METATYPE(MyData)如果需要用到流的输入输出&…

vxe-table 启用 checkbox-config.reserve 实现分页复选框选择功能、获取已选数据的用法

vxe-table 启用 checkbox-config.reserve 实现分页复选框选择功能、获取已选数据的用法 查看官网:https://vxetable.cn gitbub:https://github.com/x-extends/vxe-table gitee:https://gitee.com/x-extends/vxe-table 效果 代码 获取已选择…

蓝桥杯-门牌制作

题目描述 本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。 小蓝要为一条街的住户制作门牌号。 这条街一共有 20202020 位住户,门牌号从 11 到 20202020 编号。 小蓝制作门牌的方法是先制作 00 到 99 这几个数字…

C#调用Lua方法1+C#调用Lua方法2,3

xLua中Lua调用C#代码 原因:C#实现的系统,因为Lua可以调用,所以完全可以换成Lua实现,因为Lua可以即时更改,即时运行,所以游戏的代码逻辑就可以随时更改。 实现和C#相同效果的系统,如何实现&#…

macOS Chrome - 打开开发者工具,设置 Local storage

文章目录 macOS Chrome - 打开开发者工具设置 Local storage macOS Chrome - 打开开发者工具 方式2:右键点击网页,选择 检查 设置 Local storage 选择要设置的 url,显示右侧面板 双击面板,输入要添加的内容 2025-04-08&#xff…

zustand 源码解析

文章目录 实现原理createcreateStore 创建实例CreateStoreImpl 实现发布订阅createImpl 包装返回给用户调用的 hookuseSyncExternalStoreWithSelector 订阅更新zustand 性能优化自定义数据更新createWithEqualityFncreateWithEqualityFnImpl 返回 hookuseSyncExternalStoreWith…

kotlin,Android,jetpack compose,日期时间设置

AI生成,调试出来学习,这些小组件会用了,就可以组合一个大点的程序了。 package com.example.mydatetimeimport android.app.AlertDialog import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.co…

构建k8s下Helm私有仓库与自定义Chart开发指南

#作者:程宏斌 文章目录 自定义helm模板1、开发自己的chare包2、调试chart3、安装chart 自定义helm模板 https://hub.helm.sh/ 1、开发自己的chare包 [rootmaster ~]# helm create mychare //创建一个名为mychare的chare包 [rootmaster ~]# tree -C mychare/ //以…

MOP数据库中的EXPLAIN用法

EXPLAIN 是 SQL 中的一个非常有用的工具,主要用于分析查询语句的执行计划。执行计划能展示数据库在执行查询时的具体操作步骤,像表的读取顺序、使用的索引情况、数据的访问方式等,这有助于我们对查询性能进行优化。 语法 不同的数据库系统&…

项目范围蔓延的十大诱因及应对策略

项目范围蔓延的十大诱因及应对策略是什么?主要在于: 缺乏清晰目标、利益相关方过多、需求变更未及时管控、缺少优先级体系、沟通链条冗长、管理层干预频繁、资源与预算不匹配、技术风险被低估、合同或协议不完善、缺乏阶段性验收与复盘。其中缺乏清晰目标…

做好一个测试开发工程师第二阶段:java入门:idea新建一个project后默认生成的.idea/src/out文件文件夹代表什么意思?

时间:2025.4.8 一、前言 关于Java与idea工具安装不再展开,网上很多教程,可以自己去看 二、project建立后默认各文件夹代表意思 1、首先new---->project后会得到文件如图 其中: .idea文件代表:存储这个项目的历史…

算法进阶指南 分形

问题描述 分形,具有以非整数维形式充填空间的形态特征。通常被定义为: “一个粗糙或零碎的几何形状,可以分成数个部分,且每一部分都(至少近似地)是整体缩小后的形状”,即具有自相似的性质。 现…