当前位置: 首页 > news >正文

大数据学习(106)-hivesql函数

🍋🍋大数据学习🍋🍋

🔥系列专栏: 👑哲学语录: 用力所能及,改变世界。
💖如果觉得博主的文章还不错的话,请点赞👍+收藏⭐️+留言📝支持一下博主哦🤞


一、聚合函数(Aggregate Functions)

函数名说明示例
COUNT(*)统计所有行数SELECT COUNT(*) FROM orders;
COUNT(column)统计非空值数量SELECT COUNT(email) FROM users;
SUM(column)计算数值列总和SELECT SUM(price * quantity) AS total FROM order_items;
AVG(column)计算数值列平均值SELECT AVG(salary) FROM employees;
MIN(column)获取最小值SELECT MIN(created_at) FROM logs;
MAX(column)获取最大值SELECT MAX(temperature) FROM weather;
STDDEV(column)计算标准差(部分数据库支持)SELECT STDDEV(score) FROM exams;
VAR(column)计算方差(部分数据库支持)SELECT VAR(score) FROM exams;
GROUP_CONCAT()合并多行字符串(MySQL)SELECT GROUP_CONCAT(DISTINCT category SEPARATOR ', ') FROM products;
STRING_AGG()合并字符串(SQL Server/PostgreSQL)SELECT STRING_AGG(name, ', ') FROM tags;

二、字符串函数(String Functions)

函数名说明示例
CONCAT()拼接字符串SELECT CONCAT(first_name, ' ', last_name) AS full_name;
SUBSTRING(str, start, length)截取子字符串SELECT SUBSTRING('Hello World', 7, 5); → World
LEFT(str, length)从左侧截取SELECT LEFT('Hello', 3); → Hel
RIGHT(str, length)从右侧截取SELECT RIGHT('Hello', 3); → llo
LENGTH(str)获取字符串长度SELECT LENGTH('SQL'); → 3
CHAR_LENGTH(str)获取字符数(多字节字符支持)SELECT CHAR_LENGTH('中文'); → 2
UPPER(str)转大写SELECT UPPER('hello'); → HELLO
LOWER(str)转小写SELECT LOWER('WORLD'); → world
TRIM(str)去除空格SELECT TRIM(' data '); → data
REPLACE(str, old, new)替换子字符串SELECT REPLACE('apple-banana', '-', ' '); → apple banana
INSTR(str, substr)查找子串位置(MySQL)SELECT INSTR('hello world', 'world'); → 6
POSITION(substr IN str)查找子串位置(PostgreSQL)SELECT POSITION('world' IN 'hello world'); → 6
LPAD(str, length, pad)左侧填充SELECT LPAD('7', 3, '0'); → 007
RPAD(str, length, pad)右侧填充SELECT RPAD('7', 3, '0'); → 700

三、数值函数(Numeric Functions)

函数名说明示例
ABS(num)绝对值SELECT ABS(-10); → 10
ROUND(num, decimals)四舍五入SELECT ROUND(3.14159, 2); → 3.14
CEIL(num)向上取整SELECT CEIL(4.2); → 5
FLOOR(num)向下取整SELECT FLOOR(4.8); → 4
POWER(base, exp)计算幂SELECT POWER(2, 3); → 8
MOD(num, divisor)取模(余数)SELECT MOD(10, 3); → 1
SQRT(num)平方根SELECT SQRT(16); → 4
RAND()生成随机数(0-1之间)SELECT RAND(); → 0.123456
SIGN(num)返回符号(-1, 0, 1)SELECT SIGN(-5); → -1

四、日期时间函数(Date/Time Functions)

通用函数

函数名说明示例
NOW()当前时间戳SELECT NOW(); → 2023-10-05 14:30:00
CURRENT_DATE当前日期SELECT CURRENT_DATE; → 2023-10-05
CURRENT_TIME当前时间SELECT CURRENT_TIME; → 14:30:00
EXTRACT(part FROM date)提取日期部分SELECT EXTRACT(YEAR FROM '2023-10-05'); → 2023
DATE_PART(part, date)提取日期部分(PostgreSQL)SELECT DATE_PART('month', '2023-10-05'); → 10
MySQL

函数名说明示例
DATE_FORMAT(date, format)格式化日期SELECT DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i:%s');
DATE_ADD(date, INTERVAL expr)日期加减SELECT DATE_ADD('2023-10-05', INTERVAL 1 DAY); → 2023-10-06
DATEDIFF(date1, date2)日期差值(天数)SELECT DATEDIFF('2023-10-10', '2023-10-01'); → 9
PostgreSQL

函数名说明示例
TO_CHAR(date, format)格式化日期SELECT TO_CHAR(NOW(), 'YYYY-MM-DD HH24:MI:SS');
DATE_TRUNC(part, date)截断日期到指定精度SELECT DATE_TRUNC('month', NOW()); → 2023-10-01
AGE(date)计算当前时间与给定时间的差值SELECT AGE(NOW(), '2023-01-01'); → 9 months
SQL Server

函数名说明示例
FORMAT(date, format)格式化日期SELECT FORMAT(GETDATE(), 'yyyy-MM-dd HH:mm:ss');
DATEADD(part, num, date)日期加减SELECT DATEADD(DAY, 1, '2023-10-05'); → 2023-10-06
DATEDIFF(part, date1, date2)日期差值SELECT DATEDIFF(DAY, '2023-10-01', '2023-10-10'); → 9

五、条件函数(Conditional Functions)

函数名说明示例
CASE WHEN多条件分支sql SELECT CASE WHEN score >= 90 THEN 'A' WHEN score >= 80 THEN 'B' ELSE 'C' END;
COALESCE(arg1, arg2, ...)返回第一个非空值SELECT COALESCE(null_column, 'N/A');
NULLIF(arg1, arg2)若两值相等则返回 NULLSELECT NULLIF(value, 0); → 若 value=0 则返回 NULL
IIF(condition, true_value, false_value)简单条件(SQL Server)SELECT IIF(age > 18, 'Adult', 'Minor');
SWITCH(expr, case1, result1, case2, result2, ...)多分支(部分数据库支持)SELECT SWITCH(role, 'admin', 1, 'user', 2);

六、窗口函数(Window Functions)

函数名说明示例
ROW_NUMBER()生成行号(唯一)SELECT ROW_NUMBER() OVER (ORDER BY salary DESC) AS row_num;
RANK()排名(允许并列,如1,1,3)SELECT RANK() OVER (PARTITION BY department ORDER BY sales DESC);
DENSE_RANK()密集排名(无间隔,如1,1,2)SELECT DENSE_RANK() OVER (ORDER BY score DESC);
SUM(column) OVER()分区内累计值SELECT SUM(amount) OVER (PARTITION BY user_id ORDER BY date) AS running_total;
AVG(column) OVER()分区内平均值SELECT AVG(price) OVER (PARTITION BY category);
LEAD(column, offset)获取后续行的值SELECT LEAD(date, 1) OVER (ORDER BY date) AS next_date;
LAG(column, offset)获取前一行值SELECT LAG(price, 1) OVER (ORDER BY date) AS prev_price;
NTILE(num_buckets)将数据分为指定数量的桶SELECT NTILE(4) OVER (ORDER BY score) AS quartile;

七、系统函数(System Functions)

函数名说明示例
USER / CURRENT_USER当前登录用户SELECT USER();
VERSION()数据库版本SELECT VERSION(); → MySQL 8.0.30
DATABASE()当前数据库名SELECT DATABASE();
@@IDENTITY最后插入的自动增长ID(SQL Server)INSERT INTO table VALUES(...); SELECT @@IDENTITY;
UUID() / GEN_RANDOM_UUID()生成唯一标识符(PostgreSQL)SELECT GEN_RANDOM_UUID(); → a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11
CURRENT_TIMESTAMP当前时间戳(标准SQL)SELECT CURRENT_TIMESTAMP;

八、类型转换函数

函数名说明示例
CAST(expr AS type)显式类型转换SELECT CAST('123' AS INT);
CONVERT(type, expr)类型转换(支持格式指定)SELECT CONVERT(VARCHAR, 123);
TRY_CAST(expr AS type)安全转换(失败返回NULL,SQL Server)SELECT TRY_CAST('abc' AS INT); → NULL
::typePostgreSQL简写类型转换SELECT '123'::INT;

九、其他函数

函数名说明示例
EXISTS(subquery)检查子查询是否存在结果SELECT * FROM users WHERE EXISTS (SELECT 1 FROM orders WHERE users.id = orders.user_id);
IN(list)匹配列表中的值SELECT * FROM products WHERE category IN ('Electronics', 'Books');
BETWEEN start AND end范围筛选SELECT * FROM logs WHERE created_at BETWEEN '2023-01-01' AND '2023-12-31';
JSON_VALUE(json, path)提取JSON字段值(SQL Server)SELECT JSON_VALUE(data, '$.name') FROM json_table;
~(正则表达式)正则匹配(PostgreSQL)SELECT 'hello' ~ '^h'; → true
PI()返回圆周率πSELECT PI(); → 3.141592653589793

注意事项

  1. 数据库差异:不同数据库的函数名称和参数可能不同(如日期函数)。
  2. 性能优化:避免在大型数据集上频繁使用复杂函数。
  3. 兼容性:标准SQL函数(如CURRENT_TIMESTAMP)通常跨数据库兼容。

相关文章:

  • Maven相关名词及相关配置
  • Ubuntu卸载小皮面板
  • 记一次springboot集成海康威视SDK过程
  • 九、自动化函数02
  • sprintf函数
  • 企业应如何防范 AI 驱动的网络安全威胁?
  • WAF防火墙:构筑Web应用安全的“隐形护盾”
  • emotn ui桌面tv版官网-emotn ui桌面使用教程
  • 通信算法之265: 无人机系统中的C2链路
  • 前端 -- uni-app 的 splitChunks 分包详解与实战!
  • 图像预处理-色彩空间补充,灰度化与二值化
  • 如何在不同版本的 Elasticsearch 之间以及集群之间迁移数据
  • Android ExifInterface rotationDegrees图旋转角度,Kotlin
  • 基于 PyTorch 的 LSTM 实现降雨量预测
  • 使用RUN pip install flask和RUN pip install -r requirements.txt
  • 【rdma通信名词概念】
  • 鸿蒙开发中,@Extend、@Styles 和 @Builder 的区别
  • 前端快速入门——JavaScript函数、DOM
  • Spring MVC 模型数据绑定:addAttribute 与 put 方法详解
  • 【区块链+ 人才服务】“CERX Network”——基于 FISCO BCOS 的研学资源交换网络 | FISCO BCOS 应用案例
  • 胸外科专家查出肺多发结节,说了一个可怕的事实……
  • 陕西省副省长窦敬丽已任宁夏回族自治区党委常委、统战部部长
  • 移动互联网未成年人模式正式发布
  • “乐购浦东”消费券明起发放,多个商家同期推出折扣促销活动
  • 昆明破获一起算命破灾诈骗案,民警:大师算不到自己的未来
  • 西湖大学独家回应本科招生走出浙江:经过三年试点,条件成熟