所有的sql聚合函数的应用例题 谢谢
WHERE type = 'business'
下面是结果集:
-------------------------- -----------
6,281.25 30788
(1 row(s) affected)
------------------------------------------------
MAX 求最大值
例题:简单的就不写了
-------------------------------------------------
BINARY_CHECKSUM
在表中任一行上计算的 BINARY_CHECKSUM(*) 返回相同的值,只要随后没有修改行。
BINARY_CHECKSUM(*) 将为大多数(但不是全部)行更改返回不同的值,并可用于检测大多数行修
改。
例题:本例使用 BINARY_CHECKSUM 来检测 Northwind 数据库的 Products 表中一行的改变。
/*Get the checksum value before the values in the specific rows (#13-15) are changed.*/
USE Northwind
GO
CREATE TABLE TableBC (ProductID int, bchecksum int)
INSERT INTO TableBC
SELECT ProductID, BINARY_CHECKSUM(*)
FROM Products
/*TableBC contains a column of 77 checksum values corresponding to each row in the Products table.*/
--A large company bought products 13-15.
--The new company modified the products names and unit prices.
--Change the values of ProductsName and UnitPrice for rows 13, 14, and 15 of the Products table.*/
UPDATE Products
SET ProductName='Oishi Konbu', UnitPrice=5
WHERE ProductName='Konbu'
UPDATE Products
SET ProductName='Oishi Tofu', UnitPrice=20
WHERE ProductName='Tofu'
UPDATE Products
SET ProductName='Oishi Genen Shouyu', UnitPrice=12
WHERE ProductName='Genen Shouyu'
--Determine the rows that have changed.
SELECT ProductID
FROM TableBC
WHERE EXISTS (
SELECT ProductID
FROM Products
WHERE Products.ProductID = TableBC.ProductID
AND BINARY_CHECKSUM(*) TableBC.bchecksum)
下面是结果集:
ProductID
13
14
15
----------------------------------------------
应该这样是可以实现的,不过我未测试,你试下!
SELECT A.[姓名]
,B.[存款] - C.[消费] AS [余额]
FROM [资料表] A
,(SELECT [Id]
,SUM([存款]) AS [存款]
FROM [存款表]
GROUP BY [Id]) B
,(SELECT [Id]
,SUM([消费]) AS [消费]
FROM [消费表]
GROUP BY [Id]) C
WHERE A.[Id] = B.[Id]
AND A.[Id] = C.[Id]
AND B.[Id] = C.[Id]
但是对于只有存款而没有消费或者有消费而没有存款的人,这样查询是得到余额的,所以还要修改一下,修改后如下所示即可:
SELECT A.[姓名]
,ISNULL(B.[存款],0) - ISNULL(C.[消费],0) AS [余额]
FROM [资料表] A
LEFT JOIN (SELECT [Id]
,SUM([存款]) AS [存款]
FROM [存款表]
GROUP BY [Id]) B
ON A.[Id] = B.[Id]
LEFT JOIN (SELECT [Id]
,SUM([消费]) AS [消费]
FROM [消费表]
GROUP BY [Id]) C
ON A.[Id] = C.[Id]
AND B.[Id] = C.[Id]
函数 返回值 样例 显示
ceil(n) 大于或等于数值n的最小整数 select ceil(10.6) from dual; 11
floor(n) 小于等于数值n的最大整数 select ceil(10.6) from dual; 10
mod(m,n) m除以n的余数,若n=0,则返回m select mod(7,5) from dual; 2
power(m,n) m的n次方 select power(3,2) from dual; 9
round(n,m) 将n四舍五入,保留小数点后m位 select round(1234.5678,2) from dual; 1234.57
sign(n) 若n=0,则返回0,否则,n>0,则返回1,n<0,则返回-1 select sign(12) from dual; 1
sqrt(n) n的平方根 select sqrt(25) from dual ; 5
2、常用字符函数
initcap(char) 把每个字符串的第一个字符换成大写 select initicap('mr.ecop') from dual; Mr.Ecop
lower(char) 整个字符串换成小写 select lower('MR.ecop') from dual; mr.ecop
replace(char,str1,str2) 字符串中所有str1换成str2 select replace('Scott','s','Boy') from dual; Boycott
substr(char,m,n) 取出从m字符开始的n个字符的子串 select substr('ABCDEF',2,2) from dual; CD
length(char) 求字符串的长度 select length('ACD') from dual; 3
|| 并置运算符 select 'ABCD'||'EFGH' from dual; ABCDEFGH
3、日期型函数
sysdate 当前日期和时间 select sysdate from dual;
last_day 本月最后一天 select last_day(sysdate) from dual;
add_months(d,n) 当前日期d后推n个月 select add_months(sysdate,2) from dual;
months_between(d,n) 日期d和n相差月数 select months_between(sysdate,to_date('20020812','YYYYMMDD')) from dual;
next_day(d,day) d后第一周指定day的日期 select next_day(sysdate,'Monday') from dual;
day 格式 有 'Monday' 星期一 'Tuesday' 星期二
'wednesday' 星期三 'Thursday' 星期四 'Friday' 星期五
'Saturday' 星期六 'Sunday' 星期日
4、特殊格式的日期型函数
Y或YY或YYY 年的最后一位,两位,三位 select to_char(sysdate,'YYY') from dual;
Q 季度,1-3月为第一季度 select to_char(sysdate,'Q') from dual;
MM 月份数 select to_char(sysdate,'MM') from dual;
RM 月份的罗马表示 select to_char(sysdate,'RM') from dual; IV
month 用9个字符表示的月份名 select to_char(sysdate,'month') from dual;
ww 当年第几周 select to_char(sysdate,'ww') from dual;
w 本月第几周 select to_char(sysdate,'w') from dual;
DDD 当年第几天,一月一日为001 ,二月一日032 select to_char(sysdate,'DDD') from dual;
DD 当月第几天 select to_char(sysdate,'DD') from dual;
D 周内第几天 select to_char(sysdate,'D') from dual; 如 sunday
DY 周内第几天缩写 select to_char(sysdate,'DY') from dual; 如 sun
hh12 12小时制小时数 select to_char(sysdate,'hh12') from dual;
hh24 24小时制小时数 select to_char(sysdate,'hh24') from dual;
Mi 分钟数 select to_char(sysdate,'Mi') from dual;
ss 秒数 select to_char(sysdate,'ss') from dual;
select to_char(sysdate,'YYYY-MM-DD HH:24:mi:ss') from dua;
to_number() 将合法的数字字符串 select to_number('88877') from dual; 88877
to_char() 将数字转换为字符串 select to_char(88877) from dual; '88877'
set serveroupt on;
dbms_output.put_line('hello world')
set heading off 由于正在创建数据文件,不需要表头
set pagesize 0 不需要分页
set linesize 80 设置行的最大尺寸
set echo off 告诉sql plus 在执行语句时,不要回显语句
set feedback off 禁止sql plus 显示有多少满足查询的行被检索到
col sales format 999,999,999
append 添加文本到当前行尾
change/old/new/ 在当前行用新的文本代替旧的文本
change/text 从当前行删除wenb
del 删除当前行
input text 在当前行之后添加一行
list 显示缓冲区中的所有行
list n 显示缓冲区中的第n行
list m n 显示m到n
5、字符函数
--------------------------------------------------------------------------------
字符函数主要用于修改字符列。这些函数接受字符输入,返回字符或数字值。Oracle 提供的一些字符函数如下。
1. CONCAT (char1, char2)
返回连接“char2”的“char1”。
示例 SELECT CONCAT( CONCAT(ename, ' is a '), job) FROM emp;
2. INITCAP(string)
将“string”的字符转成大写。
示例 Select INITCAP(ename) from emp;
3. LOWER (string)
将“string”转成小写。
示例 Select LOWER(ENAME) from emp;
4. LPAD(char1,n [,char2])
返回“char1”,左起由“char2”中的字符补充到“n”个字符长。如果“char1”比“n”长,则函数返回“char1”的前“n”个字符。
示例 SELECT LPAD(ename,15,'*') FROM emp;
5. LTRIM(string,trim_set)
从左边删除字符,此处“string”是数据库的列,或者是字面字符串,而“trim_set” 是我们要去掉的字符的集合。
示例 SELECT LTRIM('abcdab','a') FROM DUAL;
6. REPLACE(string, if, then)
用 0 或其他字符代替字符串中的字符。“if”是字符或字符串,对于每个出现在“string”中的“if”,都用“then”的内容代替。
示例 SELECT REPLACE('JACK and JUE','J','BL') FROM DUAL;
7. RPAD(char1, n [,char2])
返回“char1”,右侧用“char2”中的字符补充到“n”个字符长。如果 “char1”比“n” 长,则函数返回“char1”的前“n”个字符。
示例 SELECT RPAD(ename,15,'*') FROM emp;
8. RTRIM(string,trim_set)
从右侧删除字符,此处“string”是数据库的列,或者是字面字符串,而“trim_set” 是我们要去掉的字符的集合。
示例 SELECT RTRIM('abcdef', 'f') FROM DUAL;
9. SOUNDEX(char)
返回包含“char”的表意字符的字符串。它允许比较英语中拼写不同而发音类似的字。
示例 SELECT ename FROM emp
WHERE SOUNDEX(ename) = SoUNDEX('SMYTHE');
10. SUBSTR(string, start [,count])
返回“string”中截取的一部分。该命令截取“string”的一个子集,从“start”位置开始,持续“count”个字符。如果我们不指定“count”,则从“start”开始截取到“string”的尾部。
示例 SELECT SUBSTR('ABCDEFGIJKLM',3,4) FROM DUAL;
11. TRANSLATE(string, if, then)
“if”中字符的位置,并检查“then”的相同位置,然后用该位置的字符替换 “string”中的字符。
示例 SELECT TRANSLATE(ename,'AEIOU', 'XXXXX') FROM emp;
12. UPPER(string)
返回大写的“string”。
示例 SELECT UPPER('aptech computer education') FROM dual;
13. ASCII(string)
该命令是“American Standard Code for Information Interchange”的缩写。它是使用数字表示可打印字符的基本规则。该函数返回 “string”中第一个(最左边)字符的 ASCII 值。
示例 SELECT ASCII('APTECH') from dual;
14. INSTR (string, set[, start[, occurrence] ] )
该命令“string”中从“start”位置开始查找字符集合的位置,再查找“set”出现的第一次、第二次等等的“occurrence”(次数)。“start”的值也可以是负数,代表从字符串结尾开始向反方向搜索。该函数也用于数字和日期数据类型。
示例 SELECT INSTR('aptech is aptech','ap',1,2) FROM DUAL;
15. LENGTH(string)
返回“string”的长度值。
示例 SELECT ename, LENGTH(ename) FROM emp
WHERE empno = 7698;
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/lihan6415151528/archive/2009/08/06/4417974.aspx
聚合函数基于group by语句。
常见的有sum(),max(),min(),avg(),count(),wm_concat()
sql聚合函数有哪些
sql聚合函数有:求和函数(SUM)、计数函数(COUNT)、平均值函数(AVG)、最大值函数(MAX)、最小值函数(MIN)。1、求和函数(SUM)用于计算某列的总和。例如,如果你有一个包含销售数据的表格,你可以使用SUM函数来计算所有销售的总和。2、计数函数(COUNT)用于计算表中的行数或特定列中的非NULL...
sql的聚合函数有哪些
VAR_POP()和VAR_SAMP():计算特定列的总体方差。前者计算总体所有值的方差,后者计算总体样本的方差。FIRST_VALUE(),LAST_VALUE(),NTH_VALUE():在窗口函数中用于获取特定行的第一个或最后一个值,或指定位置的值。SUM()和其他聚合函数还可以与OVER()子句结合使用,以在数据集上执行更复杂的聚合操...
sql 聚合函数有哪些
聚合函数是对一组值执行计算并返回单一的值的函数,它经常与SELECT语句的GROUP BY子句一同使用,SQL SERVER 中具体有哪些聚合函数呢?我们来一一看一下:1. AVG 返回指定组中的平均值,空值被忽略。例:select prd_no,avg(qty) from sales group by prd_no 2. COUNT 返回指定组中项目的数量。
SQLServer中的聚合函数有哪些(属于sql聚合函数的是)
SQLServer中的聚合函数有:1.count()所有记录数 2.count(*)所有非null记录数 3.avg()某一列平均值 4.min()某一列最小值 5.max()某一列最大值 6.sum()某一列总和 使用方法:1.SELECTCOUNT(字段1)FROM表A统计字段1在表A中出现的次数 2.SELECT学号,SUM(各科成绩)FROMstudentGROUPBY学号用来...
sql 语句中那些是聚合函数?
1,1003);insert into test_group values(1,1004);insert into test_group values(1,1005);3、查询表中所有记录,select t.*, rowid from test_group t,4、编写sql,分别求聚合函数max、min、sum、avg,见:select max(value), min(value), sum(value), avg(value) from test_group t,
sql的聚合函数
SQL的聚合函数是一组特殊的函数,用于对一组值执行计算,并返回单个值,这些函数在数据汇总和统计中非常有用。使用聚合函数时,通常与GROUP子句结合使用,以根据特定列对结果集进行分组,并对每个组应用聚合函数。例如,如果你想知道每个部门的员工数量,你可以使用GROUP子句按部门分组,并使用COUNT函数计算...
开窗函数和聚合函数的区别是什么?
开窗函数和聚合函数是SQL中常用的两种函数,它们在处理数据时有着不同的作用和特点。首先,开窗函数是在每个窗口分区内进行计算的函数,它可以根据窗口的大小进行滑动或滚动操作,从而对每个分区内的数据进行计算。开窗函数通常与OVER子句一起使用,可以用于计算累计值、移动平均值、排名等。开窗函数的优点是...
having和group by有什么区别?
它是一个过滤声明,是在查询返回结果集以后对查询结果进行的过滤操作。2.group by:对select查询出来的结果集按照某个字段或者表达式进行分组,获得一组组的集合,然后从每组中取出一个指定字段或者表达式的值。 在说group by的时候,我们还需要了解聚合函数,聚合函数是SQL语言中一种特殊的函数。
SQL语句中 聚合函数count()忽略空值么?
SQL语句函数baicount(),如果括号中是列名称,是忽略空值NULL的,即返回列的值的数目,不包含NULL值。COUNT函数,用于Excel中对给定数据集合或者单元格区域中数据的个数进行计数,其语法结构为COUNT(value1,value2, ...)。COUNT函数只能对数字数据进行统计,对于空单元格、逻辑值或者文本数据将被忽略,...
第六章 SQL聚合函数 JSON_ARRAYAGG
JSON_ARRAYAGG 函数将表中多行列的值组合成一个包含元素值的 JSON 数组。 因为在计算所有聚合字段之后,查询结果集中应用了一个 ORDER BY 子句,所以 ORDER BY 不能直接影响这个列表中的值序列。 在某些情况下, JSON_ARRAYAGG 结果可能是按顺序出现的,但是不应该依赖于这种顺序。 在给定...
苍梧昌派同: AVG( expression )返回集合中各值的平均值.将忽略 Null 值.参数 Int32、 Int64、Double 和 Decimal.返回值 expression 的类型.示例 SELECT VALUE SqlServer.AVG(p.ListPrice) FROM AdventureWorksEntities.Product as p CHECKSUM_...
邱县13711197712: sql聚合函数的应用 - ?
苍梧昌派同: 聚合函数对一组值执行计算,并返回单个值.除了 COUNT 以外,聚合函数都会忽略空值.聚合函数经常与 SELECT 语句的 GROUP BY 子句一起使用.所有聚合函数均为确定性函数.也就是说,只要使用一组特定输入值调用聚合函数,该函...
邱县13711197712: sql聚合函数的应用?
苍梧昌派同: 我们知道数据库通常包含大量数据,要从海量的数据中找到我们需要的某条记录无异于大海捞针,不过通过SQL语言我们可以找到很多方法从数据库中提取我们要查找的特定数据,就是通过这些方法我们才能找到“列举出七八两个月中购买了西...
邱县13711197712: sql 聚合函数的使用 - ?
苍梧昌派同: sql="select a.ID,a.title,count(b.ID) as total from table1 a left join table2 b on a.ID=b.AID where title like '%kkk%' group by a.ID,a.title having count(b.ID)>5 order by a.ID desc"应该可以吧,你试试
邱县13711197712: sql聚合函数的使用 - ?
苍梧昌派同: 应该这样是可以实现的,不过我未测试,你试下!SELECT A.[姓名],B.[存款] - C.[消费] AS [余额]FROM [资料表] A,(SELECT [Id],SUM([存款]) AS [存款]FROM [存款表]GROUP BY [Id]) B,(SELECT [Id],SUM([消费]) AS [消费]...
邱县13711197712: 怎么写求占百分比的sql 语句,内祥 - ?
苍梧昌派同: 此sql语句包括了两个聚合函数做除法求百分比,并保留两位小数,直接输出字符串形式的百分比.以及对case when在聚合函数的应用.
邱县13711197712: Access应用程序提供了几种种SQL聚合函数?急用,谢谢!! - ?
苍梧昌派同: 聚合函数: SUM(列名) 求出某一列属性值的总和 AVG(列名) 求出某一列属性值的平均值 MAX(列名) 求出某一列属性值的最大值 MIN(列名) 求出某一列属性值的最小值 COUNT(列名) 求出某一列属性值的个数 COUNT (*) 求出所有元组的个数
邱县13711197712: 关于sql聚合函数的一道题 - ?
苍梧昌派同: select top 1 bumen, avg(chengji) as avgchengji from yourtable group by bumen order by avgchengji desc sql中是没有every关键字的
邱县13711197712: 在SQL中的聚合函数 - ?
苍梧昌派同: 原则上,你要用group by,那么前面抽取的字段必须要作为分组依据,否则就需要sum,avg,max等函数的处理.