常用的函数有:
创新互联公司专注于卫辉企业网站建设,响应式网站,商城系统网站开发。卫辉网站建设公司,为卫辉等地区提供建站服务。全流程按需定制,专业设计,全程项目跟踪,创新互联公司专业和态度为您提供的服务
1、COUNT ()返回查寻的行数
例如:select count(*) from table;
2、MAX() 返回表达式的最大值
例如:select a, max(b) from table group by a;
3、MIN() 返回表达式的最小值
例如:select a, min(b) from table group by a;
4、SUM() 返回表达式的总合
例如:select a, sum(b) from table group by a;
5、AVG() 返回表达式的平均值
例如:select a, avg(b) from table group by a。
函数
函数在数学上的定义:给定一个非空的数集A,对A施加对应法则f,记作f(A),得到另一数集B,也就是B=f(A).那么这个关系式就叫函数关系式,简称函数。
GROUP BY中每个唯一的列组合生成一个总数,但这些总数不会“累加”到更高一级的总数中。要实现这一点,你可以用GROUP BY ROLLUP或GROUP BY CUBE替代GROUP BY,不过它们会生成所有可能的总数,而你可能不需要全部总数。对GROUP BY CUBE而言,将会生成2^n组总数,这里的n是GROUP BY中列的数目。查看下面的查询,它使用了SH样本模式:SELECT prod_id, cust_id, channel_id, SUM(quantity_sold)FROM salesWHERE cust_id 3GROUP BY CUBE (prod_id, cust_id, channel_id)这将生成8组总数:所有行的总和每个通道,包括所有产品和顾客每个顾客,包括所有产品和通道每项产品,包括所有顾客和通道每个通道/顾客组合,包括所有产品每个通道/产品组合,包括所有顾客每个产品/顾客组合,包括所有通道每个产品、顾客和通道组合可能的组合非常多。GROUP BY CUBE中每增加一列,生成的总数就会翻一番。可以用GROUP BY GROUPING SETS来代替GROUP BY CUBE。你可以应用来指定你感兴趣的总数组合。因为它不必计算它不需要集合(也不会产生太多结果),所以对SQL引擎来说更为高效。其格式为:GROUP BY GROUPING SETS ((list), (list) ... )这里(list)是圆括号中的一个列序列,这个组合生成一个总数。要增加一个总和,必须增加一个(NUlL)分组集。例如,如果只要生成每项产品(包括所有顾客和通道)和每个顾客/通道组合(包括所有产品)的总数,可以输入:SELECT prod_id, cust_id, channel_id, SUM(quantity_sold)FROM salesWHERE cust_id 3GROUP BY GROUPING SETS ((prod_id), (cust_id, channel_id));这种方法将这个数据集生成的总数数量从180个减少到37个,并帮助你着重回答你希望解答的问题。
rollup函数
本博客简单介绍一下oracle分组函数之rollup的用法,rollup函数常用于分组统计,也是属于oracle分析函数的一种
环境准备
业务场景:求各部门的工资总和及其所有部门的工资总和
这里可以用union来做,先按部门统计工资之和,然后在统计全部部门的工资之和
上面是用union来做,然后用rollup来做,语法更简单,而且性能更好
业务场景:基于上面的统计,再加需求,现在要看看每个部门岗位对应的工资之和
用rollup实现,语法更简单
假如再加个时间统计的,可以用下面sql:
cube函数
cube函数是维度更细的统计,语法和rollup类似
假设有n个维度,那么rollup会有n个聚合,cube会有2n个聚合
1.打开plsql并转到登录页面。
2.以管理员身份登录数据库。
3.登录后,创建一个新的SQL窗口。
4,输入,以下语句选择a.file#,a.name,a.bytes / 1024/1024 CurrentMB,ceilHWM * a.block_size / 1024/1024Resizeto,a.bytes - HWM * a .block_size / 1024/1024 releaseMB;
5.单击“执行”按钮以执行查询操作。
6,查询后,可以在查询结果中看到每个数据库文件的具体路径。
首先你的starttime是什么类型的,数字?字符?还是时间?
要出来08:00-08:30这种结果简单,只要查询的时候加一个关联就可以,
比如select starttime||'-'||endtime from table.当然试过是时间的字段类型,比如date什么的,那就转换成字符型的,反正现在看来主要是字符型。
再说分组,分组可以用case when手动分组。
按照你给的图片个人觉得可以这么分
select case when starttime=0800 and endtime=10:00 then 1
when starttime=0900 and endtime=12:00 then 2
when starttime=1330 and endtime=15:30 then 3
when starttime=1530 and endtime=17:30 then 4
end 分组, starttime||'-'||endtime from table
这个语句中的具体写法,可能会因为数据类型的原因什么的,导致语句不能直接用,需要转换一下数据类型,但是大体上的意思和写法就是这样了。