名站网址导航为大家提供关于数据库教程相关的教程网站知识。
探讨SQL compute by的使用分析
GROUP BY子句有个缺点,就是返回的结果集中只有合计数据,而没有原始的详细记录。假如如果想在SQL SERVER中完成这项工作,可以使用COMPUTE BY子句。COMPTE生成合计作为附加的汇总列出,下列 SELECT 数据库语句使用简单 COMPUTE 子句生成 titles 表中 price 及 advance 的求和总计:,复制具体相关代码 具体相关代码如下:,USE pubs SELECT type, price, advance FROM titles ORDER BY type COMPUTE SUM(price), SUM(advance),USE pubs,复制具体相关代码 具体相关代码如下:,SELECT type, price, advance FROM titles ORDER BY type COMPUTE SUM(price), SUM(advance) BY type,compute by 子句的规则:,(1)不能将distinct与行统计函数一起使用,(2)compute ??? by 子句中 ???出的列必须出现在选择列表中,(3)不能在含有compute by 子句的数据库语句中使用select into 子句,因为包括compute 子句的数据库语句会产生不规则的行。,(4)假如如果使用了compute by子句,则必须使用order by 子句, 而且compute by子句中的列必须包含在order by 子句中,并且对列的前后顺序和起始项都要一致(说白了compu,(5)假如如果compute 省略了 by ,则order by 也可以省略,(6)假如如果compute by 子句包含多列时,会将一个组(第一个列分的组)分成若干个子组(利用后面的列),并对每层子组进行统计。,(7)使用多个compute by子句时,会分别按不同的组统计出结果。详细信息还是按照正常的第一个分组相关方式显示。,(8)compute by 子句中可以使用多个统计函数,他们互不影响,(9)compute by 子句中可以不包含by ,而只用compute 此时不对前面信息分组,而只对全部信息进行统计。,比较 COMPUTE 和 GROUP BY COMPUTE 和 GROUP BY 之间的区别汇总如下: GROUP BY 生成单个结果集。每个组都有一个只包含分组依据列和显示该组子聚合的聚合函数的行。,COMPUTE 生成多个结果集。一类结果集包含每个组的明细行,其中包含选择列表中的表达式。另一类结果集包含组的子聚合,或 SELECT 数据库语句 的总聚合。选择列表可包含除分组依据列或聚合函数之外的其它表
复制具体相关代码 具体相关代码如下:
select datediff(year, 开始日期,结束日期); --两日期间隔年
select datediff(quarter, 开始日期,结束日期); --两日期间隔季
select datediff(month, 开始日期,结束日期); --两日期间隔月
select datediff(day, 开始日期,结束日期); --两日期间隔天
select datediff(week, 开始日期,结束日期); --两日期间隔周
select datediff(hour, 开始日期,结束日期); --两日期间隔小时
select datediff(minute, 开始日期,结束日期); --两日期间隔分
select datediff(second, 开始日期,结束日期); --两日期间隔秒
如:
复制具体相关代码 具体相关代码如下:
select datediff(day, '20120103',CONVERT(varchar(8), GETDATE(), 112))
计算2012年1月3号和现在时间的隔天数
关于数据库教程相关的教程网站知识今天我们就说到这里了,希望可以帮到大家。