sql 语句系列(加减乘除与平均)[八百章之第十四章]
avg的注意事项
一张t2表:
select * from t2

select AVG(sal) from t2
得到的结果是:

本来我们得到的结果应该是10的。但是得到的结果确实15.
这是因为忽略了null值。
解决方案:
当为空的时候转换为0
select AVG(coalesce(sal,0)) from t2
max 与 min的注意事项
max与min会忽略null,但是如果全是null的情况,会返回null值。
select DEPTNO,max(COMM)
from EMP
where DEPTNO in (10,30)
group by DEPTNO
例如:

解决方法:
如上文
select DEPTNO,max(coalesce(COMM,0))
from EMP
where DEPTNO in (10,30)
group by DEPTNO
sum
sum 计算的时候会忽略null值。
如上:
解决:
select DEPTNO,sum(coalesce(COMM,0))
from EMP
where DEPTNO in (10,30)
group by DEPTNO
计算行数
通常我们计算行数,通常是使用count。
同样是会忽略null值:
select COUNT(*),count(COMM)
from EMP

累计和
要实现下面这种效果:

比如2600,是红框部分的和。
假设前两列的效果是:
select e.EMPNO, e.SAL
from EMP e
order by 1
要求写出第三列的效果。
答案:
select e.EMPNO, e.SAL,(select SUM(d.SAL) from EMP d where d.EMPNO<=e.EMPNO) as total
from EMP e
order by 3
累计乘
如何实现累计乘法?
有一个数学概念:

select e.EMPNO, e.SAL,(select exp(sum(log(d.SAL))) from EMP d where d.EMPNO<=e.EMPNO and d.DEPTNO=e.DEPTNO ) as total
from EMP e
where DEPTNO=10
order by 3
累计差
分情况讨论,当是第一个直接输出第一个。后面的就是全部是负值相加然后加两个EMPNO最小值。
select e.EMPNO, e.SAL,(select case when e.EMPNO=MIN(d.EMPNO) then sum(d.SAL)
else sum(-d.SAL)+(select f.SAL from emp f where f.EMPNO=MIN(d.EMPNO))*2
end from EMP d where d.EMPNO<=e.EMPNO and d.DEPTNO=e.DEPTNO ) as total
from EMP e
where DEPTNO=10
order by EMPNO

sql 语句系列(加减乘除与平均)[八百章之第十四章]的更多相关文章
- sql 语句系列(多表之链)[八百章之第三章]
新增连接查询而不影响其他连接查询 请看图: 这种情况我们一般会使用左连接的方式. select e.ENAME,d.LOC,eb.RECEIVED from emp e join dept d on( ...
- sql 语句系列(null 值处理)[八百章之第二章]
查找只存在一个表中的数据 有两张表: EMP: select * from emp DEPT: 他们有共同的属性:deptno 现在要查询EMP 中的deptno不等于DEPTNO的deptno项. ...
- C#语言和SQL Server第十三 十四章笔记
十三章 使用ADO.NET访问数据库 十四章使用ADO.NET查询和操作数据库 十三章: ...
- “全栈2019”Java第八十四章:接口中嵌套接口详解
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- sql 语句系列(字符串的遍历嵌入删除与统计)[八百章之第十一章]
遍历字符串 我觉得首先要提出一个疑问: 一个数据库本身就是用于存储的,遍历字符串究竟有何意义? 先看如何实现的,毕竟sql service 是没有for循环,也没有loop和while的. selec ...
- WP8.1学习系列(第二十四章)——Json解析
.net已经集成了json解析,类名叫DataContractJsonSerializer DataContractJsonSerializer 类型公开以下成员. 构造函数 名称 说明 Da ...
- Mysql常用sql语句(八)- where 条件查询
测试必备的Mysql常用sql语句,每天敲一篇,每次敲三遍,每月一循环,全都可记住!! https://www.cnblogs.com/poloyy/category/1683347.html 前言 ...
- SQL语句之数据库操作
SQL语句系列 1.SQL语句之行操作 2.SQL语句之表操作 3.SQL语句之数据库操作 4.SQL语句之用户管理 占坑,带写……
- SQL语句之用户管理
SQL语句系列 1.SQL语句之行操作 2.SQL语句之表操作 3.SQL语句之数据库操作 4.SQL语句之用户管理 占坑,待写……
- SQL语句之表操作
SQL语句系列 1.SQL语句之行操作 2.SQL语句之表操作 3.SQL语句之数据库操作 4.SQL语句之用户管理 写在前面 在上一篇博文里面我整理了“行”级别的操作,分别是“增(insert).删 ...
随机推荐
- Python面向对象之面向对象编程
[一]什么是面向过程 [1]面向过程介绍 面向过程,核心在于 "过程" 二字 过程的终极奥义就是将程序 "流程化" 过程是 "流水线" ,用 ...
- 单词本z launch = to throw 相关词根 lanc ject jac jet bol bl bal mit miss cast
launch = to throw 词根 launc = lanc = to throw 表示 to throw 的词根有三组 拉丁语的lanc/launc,sip 拉丁语的ject, jac(jet ...
- Python使用os模块创建带时间戳的文件
直接上源码: import os import time # 定义函数名:在py文件路径下创建cache的txt文件 def txt(name, text): # os.getcwd() 获取当前的工 ...
- 教你一招,解决Github图片不显示问题(2021.1.20测试可用)
本文提供的是windows系统解决方法,linux系统和mac系统可以参考原理,修改DNS的ip地址为阿里云或者是修改hosts文件 问题 可能有些朋友和我遇到同样的问题,逛Github的时候会发现, ...
- 修改阿里云DNS 解决蓝奏云无法访问问题
某些地区的宽带连接不上蓝奏云服务器,需要手动改一下DNS配置,改为阿里云的即可 PS:阿里云DNS服务器地址为223.5.5.5 和 223.6.6.6 下面以win10系统为例,具体步骤如下 1.进 ...
- find、grep、sed、awk命令(总结)
find.grep.sed.awk命令(总结) 大纲 *一.常见系统特殊符号* *(一)基础符号系列* *1)美元符号 $* *2)叹号符号 !* *3)竖线符号 |* *4)井号符号 #* *(二) ...
- 无力吐槽,uniapp项目外包接单碰上了这样的开发人员
随着疫情期形式的不断变化,线上线下各个行业都受到冲击.2020年我在家歇息了近4个月:跟很多人一样这一年我失业了,那段时间真的很迷茫,年龄也已过30,加上网上各种"开发人员35岁" ...
- ts-对象数组reduce-数组转对象数组
将字符串数组转化成{name:xxx,count:xxx}[]数组的代码 #定义数据类型 interface CartInfo{ name:string, count:number } let raw ...
- 记录--前端路由 hash 与 history 差异
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 简单介绍 Vue Router Vue Router 是 Vue.js 官方的路由插件,它和 Vue.js 是深度集成的,适合用于构建单页 ...
- 一文搞懂idea中的根目录和路径(以Mybatis为例)
一文搞懂idea中的根目录和路径(以Mybatis为例) 在 IntelliJ IDEA 中,项目结构和组织比较灵活,允许用户根据项目需求进行定制. 1.根目录概念: 1.1 项目根目录(Projec ...