sql 除以
This article explores the SQL divide by zero error and various methods for eliminating this.
本文探讨了SQL除以零错误以及消除该错误的各种方法。
介绍
(
Introduction
)
We all know that in math, it is not possible to divide a number by zero. It leads to infinity:
众所周知,在数学中不可能将数字除以零。 它导致无限:
SUM(ROUND(case when S1.SAL_NOS_PRM_AMT<=0 then S1.SAL_AMT
when S1.SAL_AMT<=0 then 0
else S1.SAL_AMT / S1.SAL_NOS_PRM_AMT
SELECT “A厂” ,定额名称,规格,year(日期) as 年份,数量 FROM [材料进货明细表$]
SELECT “A厂” as 工厂 ,定额名称,规格,year(日期) as 年份,数量 FROM [材料进货明细表$]
比较一下上面两句
SQL
语句的区别,没有as 工厂与有as 工厂的区别
二、选择表中若干元组
1、消除取重复的行
例4、查询材料进货明细表的定额名称
SELECT 定额名称 FROM [材料进货明细表$]
该查询结果会包含很多重复的行。消除重复行的话,必须指定关键词
distinct
SELECT distinct 定额名称 FROM [材料进货明细表$]
2、查询满足条件的元组
例5、查询材料进货明细表中单位为“套”的所有记录
SELECT * FROM [材料进货明细表$] where 单位= ‘套’
本句语句中,要学会where的用法:
要查询满足指定条件的元组,可以通过where子句实现。where子句查询条件是:
比较: =,>,<,>=,<=,!=,<>,!>,!<;not +上述比较运算符
确定范围: between and ,not between and
确定集合:in,not in
字符匹配:like,not like
空值:is null,is not null
多重条件:and,or,not
例6、查询材料进货明细表中数量在50—100之间的所有记录
SELECT * FROM [材料进货明细表$] where 数量 between 50 and 100
如果是不在50-100之间的话,直接改成:
SELECT * FROM [材料进货明细表$] where 数量 not between 50 and 100
例7、查询材料进货明细表中单位为“只”或“支”的所有记录
SELECT * FROM [材料进货明细表$] where 单位 in(‘只’,'支’)
3、字符匹配
可以用like来实现,通配符%和_
a、%代表任意长度的字符串,如a%b表示以a开头,以b结尾的任意的字符串
b、_代表任意单个字符
例8、查询材料进货明细表中定额名称以“天津”开头的所有记录
SELECT * FROM [材料进货明细表$] where 定额名称 like ‘天津%’
例9、查询材料进货明细表中定额名称以“天津”开头且字符为4个的所有记录
SELECT * FROM [材料进货明细表$] where 定额名称 like ‘天津__’
例10、查询材料进货明细表中定额名称不以“天津”开头的所有记录
SELECT * FROM [材料进货明细表$] where 定额名称 not like ‘天津%’
4、涉及空值的查询
主要是以:null出现
例11、查询材料进货明细表中规格为空的的所有记录
SELECT * FROM [材料进货明细表$] where 规格 is null
5、多条件查询
例12、查询材料进货明细表中定额名称为“天津三通”的并且数量大于30的所有记录
SELECT * FROM [材料进货明细表$] where 定额名称 = ‘天津三通’ and 数量>30
三、order by 子句
desc(降序)、asc(升序)
例13、查询材料进货明细表中数量大于30的所有记录,并且要按照数量来降序排列。
SELECT * FROM [材料进货明细表$] where 数量>30 order by 数量 desc
四、聚集函数
count(distinct/all 列名):统计元组个数
sum:求和
avg:求平均值
max:最大值
min:最小值
例14、查询材料进货明细表中天津大小头的最大数量。
SELECT max(数量) FROM [材料进货明细表$] where 定额名称 = ‘天津大小头’
或:SELECT max(数量) as 最大数量 FROM [材料进货明细表$] where 定额名称 = ‘天津大小头’
2. Excel源数据及分析下载:Excel数据透视表教程:分类百分比
SQL
语句:
select *, Hz1.分类销量/Hz2.分类销量 as 分类百分比 from
(select 品种,分公司, sum(数量) as 分类销量 from [数据$] group by 品种,分公司) Hz1,
(select 分公司, sum(数量) as 分类销量 from [数据$] group by 分公司) Hz2
where hz1.分公司=Hz2.分公司
SQL
语句解释:
select 品种,分公司, sum(数量) as 分类销量 from [数据$] group by 品种,分公司
实现对品种、分公司两字段分组的统计求和
select 分公司, sum(数量) as 分类销量 from [数据$] group by 分公司
实现对分公司字段分组的统计求和
对分公司分组统计求和数是对品种、分公司两字段分组统计求和项目再对不同品种的总就和,也就是后者包含前者。
整句语句的意思就是,将两个查询结果作为新的查询表分别命名为Hz1、Hz2,用 ”where hz1.分公司=Hz2.分公司“来组合数据,
没有条件的制约的话,将统计的结果再进行除数运算,
各品种的分组统计数(分组含品种字段)
除以
各品种已求和了的分组统计数(分组不含品种字段)求得所占比率,
最后在字段单元格设置为百分数就可以了。
在Excel中使用MS Query查询外部
数据库
的内容的优点是:不用设置公式、编写VBA代码、源
数据库
不用打开。
但要注意:源
数据库
的记录要有字段名,由于设置查询时的路径固定,。
因此源
数据库
文件不能随意移动(如确实要移动可以通过手工修改查询或VBA解决)
以下示例采用MS Query在“查询”工作簿中查询关闭的“销售”工作簿中sheet1的指定
“店铺”和指定“颜色”的内容(sheet1有“店铺”、“数量”、“颜色”等字段名及若干数据)。
操作前请先确定是否安装有MS Query。附上举例文件,请解压到D盘根目录下:
销售.xls为源数据,查询.xls中设置了msquery查询。
下载:MS Query查询未打开工作簿的内容例子
1、 新建一个工作表,选择菜单【数据】—【导入外部数据】—【新建
数据库
查询】,
界面如图,由于查询excel
数据库
的内容,因此选择【Excel Files*】并确定;
2、 弹出〖选择工作簿〗对话框,选择“销售”工作簿,〖确定〗;
3、 弹出〖选择列〗对话框,如果此时弹出“没用内容”,确定后在〖选项〗中将“系统表”勾上。
将所选工作簿的各个工作表及工作表中的字段名添加到查询结果中,全选可直接将工作表名添加,
〖下一步〗〖下一步〗,选择“在MS query中继续编辑查询”;
4、 弹出MS Query查询编辑,点击【显示/隐藏条件】图标,在“条件字段”中添加“店铺”,
值改为“[店]”(方括号中内容随意),再添加个条件为“颜色”,值改为“[色]”,点击【将数据返回Excel】
5、 回到excel的“导入数据”对话框,点击〖参数〗,选中“店”字段,再选择“从下列单元格中获取数据”,
选择一个用来更改查询关键字的单元格(如B1),并勾选“单元格值更改时自动刷新”,
“色”字段改成从单元格“B2”中获取,〖确定〗。数据放置位置选择“A3”。〖确定〗。
6、 当更改B1和B2单元格的内容(做个数据有效性)时,A3及以下的数据会即时刷新。
此法对于需要经常在局域网中查询数据非常方便,比如:数据放在局域网内的一台主机上,通过MS Query即可不打开工作簿查询数据。
-- Nullif(expr1,expr2) expr1=expr2返回null;expr1<>expr2返回expr1
-- Case When 分母=0 Then null Else 分子/分母 End
-- Case 分母 When 0 Then null Else 分子/分母 End
-- MySQ...
1.如何理解关系中的除法
定义:设关系 R
除以
关系S的结果为关系T,则T包含所有在R中但不在S中的属性及其值,且T的元组与S的元组的所有组合都在R 中(摘自百度百科)。
文字上过于抽象,若用图来表示,以下表示为关系R、S、T之间的运算:
图中阴影部分为关系R与关系S重叠的部分,即某些属性的值发生了重合,这些属性是某些元组的子属性,将R÷S,得到的结果是,元组中除了这些重叠的属性外剩下的属性。
需要注意的是,R和S中的每一行都代表一个元组(这里没有给出元组之间的分界线)。同时,要求T中每一个分量都包含公有的部
点击关注上方“
SQL
数据库
开发”,设为“置顶或星标”,第一时间送达干货
SQL
专栏
SQL
基础知识第二版
SQL
高级知识第二版问题我们在进行数据统计的时候,经常会遇到求百分比,环比,同比等这些需...
资源名称:
零
基础学
SQL
内容简介:
SQL
(Structured Query Language)作为一门结构化的查询语言,是关系
数据库
中最常用的语言。本书的内容包括
数据库
创建和管理、数据表与视图的创建和维护、数据查询、数据更新、数据控制、
SQL
的扩展PL/
SQL
编程等方面的内容,通过这些内容可以掌握编写SELECT语句、DML语句(INSERT、UPDATE和DELETE)、DDL语句(CREATE
资源太大,传百度网盘了,链接在附件中,有需要的同学自取。
SQL
Server中的运算有并,交,差,笛卡尔积,除运算个人感觉除运算时最难理解算的
什么是除运算
定义:设关系R
除以
关系S结果为关系T,则T包含所有在R中但不在S中的属性及其值,并且T的元组与S的元组的所有组合都在R中
定义看不懂没关系,正常人都看不懂的,我们来举个简单的例子:
还没懂?那我们把X表再稍微改造一下
这样应该懂了吧
from <表名>1.2 语句类型1.2.1 查询全部列 (*)select *
from <表名>1.2.2 为列设定别名 (as)select <列名1>, as <新列名1>,<列名2>, as <...