IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> MySQL复习记录【二】:流程控制函数 -> 正文阅读

[大数据]MySQL复习记录【二】:流程控制函数

流程控制函数

# 1.if 函数,if else
SELECT IF(commission_pct IS NULL, '没奖金 呵呵', '有奖金 嘻嘻') AS 备注
FROM employees;

# 2.case 函数的使用一:switch case的效果
/*
java中的选择语句
switch(){
	case 常量1:语句1; break;
	...
	default:语句n;break;
}

MySQL中
case 要判断的字段或表达式
when 常量1 then 要显示的值1或者语句1;
...
else 要显示的值n或者语句n;
end
*/

SELECT salary, department_id,
 CASE department_id
 WHEN 30 THEN salary*1.1
 WHEN 40 THEN salary*1.2
 WHEN 50 THEN salary*1.5
 ELSE salary
 END AS 新工资
 FROM employees;
 
 # 3. case 函数的使用二:类似于 多重if
/*
case 
when 条件1 then 要显示的值1或语句1;
when 条件2 then 要显示的值2或语句2;
...
else 要显示的值n或者语句n
end
*/

# 查询员工的工资情况:工资>20000,显示A级别;工资>15000,显示B级别
SELECT salary,
CASE
WHEN salary>20000 THEN 'A'
WHEN salary>15000 THEN 'B'
WHEN salary>10000 THEN 'C'
ELSE 'D'
END AS 工资级别
FROM employees;

分组函数

功能:用作统计使用,又称为聚合函数或统计函数或组函数
分类:sum 求和、avg 平均值、max 最大值、min 最小值、count 计算个数

参数支持哪些类型:

  1. sum, avg一般用于处理数值型;max, min, count可以处理任何类型;
  2. 以上分组函数都忽略null值:
  3. 可以和distinct搭配使用,实现去重;
  4. 和分组函数一同查询的字段有限制,一般要求是group by后的字段;

count函数的详细介绍

  • count(字段)
  • count(*):只要有一行不为null就加1
  • count(1):统计函数

效率:
MYISAM存储引擎下,count()的效率最高
INNODB存储引擎下,count(
)和count(1)效率差不多

案例:查询员工表中最大入职时间和最小入职时间的相差天数(diffrence)

SELECT DATEDIFF(MAX(hiredate),MIN(hiredate)) DIFFRENCE
FROM employees;

分组查询

Group By基本语法

SELECT column,group_function(column)
FROM table
[WHERE condition]
[GROUP BY group_by_expression]
[ORDER BY column]
注意:
查询列表比较特殊,要求是分组函数或者group by后出现的字段

特点:
1、分组查询中的筛选条件分为两类
			数据源			位置			关键字
分组前筛选	原始表			group by子句前	where
分组后筛选	分组后的结果集	group by子句后	having1)分组函数做条件肯定放在having子句中;
(2)能用分组前筛选的优先使用分组前筛选

案例

# 查询每个部门的平均工资
SELECT AVG(salary)
FROM employees
GROUP BY department_id;

# 查询邮箱中包含a字符的,每个部门的平均工资
SELECT AVG(salary),department_id
FROM employees
WHERE email LIKE '%a%'
GROUP BY department_id;

# 查询哪个部门的员工数大于5
#1.查询每个部门的员工个数;
#2.根据1的结果进行筛选

SELECT COUNT(*),department_id
FROM employees
GROUP BY department_id
HAVING COUNT(*)>2;

# 查询领导编号>102的每个领导手下的最低工资>5000的领导编号是哪个
SELECT manager_id,MIN(salary)
FROM employees
WHERE manager_id>102
GROUP BY manager_id
HAVING MIN(salary)>5000;

# 按表达式或函数分组

# 案例:按照员工姓名的长度分组,查询每一组的员工个数,筛选员工个数>的有哪些
SELECT COUNT(*),LENGTH(last_name) len_name
FROM employees
GROUP BY LENGTH(last_name)
HAVING COUNT(*)>5;

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-11-11 12:46:40  更:2021-11-11 12:48:44 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 5:44:22-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码