易截截图软件、单文件、免安装、纯绿色、仅160KB

SQL With cube

闲来写下with cube的用法
cube运算符在 SELECT 语句的 GROUP BY 子句中指定。该语句的选择列表应包含维度列和聚合函数表达式。GROUP BY 应指定维度列和关键字 WITH CUBE。结果集将包含维度列中各值的所有可能组合,以及与这些维度值组合相匹配的基础行中的聚合值。
先看下表:
我们以id聚合查询出平均分
这一条SQL语句与上面唯一不同之处即为多了后面的 with cube,而结果却是比前面更多了一条结果,它同样是按类ID的平均分,不同是又多了最后一个结果null 4,这个是什么呢,我们来看第一段,with cube 是 包含所有可能的组合,我们根据ID分,它帮我们按ID查出平均总,同时再帮我们计算出所有的平均分,即该表ID为1与2 的平均分。这个我们可以在很多地方应用,如按性别统计工资,按部门统计业绩……
其实实际中,我们往往就得到更准确的数据,即~上面结果应该以小数形式为好~其实上面结果也是不准确的,SQL将其四舍五入了~
我们式式办法~
我们发现有了,有了小数,但再细心一看,结果是不对的,这样SQL相当于就将前一步的操作结果转换成小数,直接在4后面加了二个0,这显示不对,那么SQL为什么会这样,我们又如何解决,其实在表voteDetails中,我们的voteNum字段为int型,那么当我们以avg(voteNum)计算时,SQL就会以voteNum的数据类型计算,也即为int,所以操作结果为int型,会四舍五入,这样虽然我们cast(avg(voteNum) as decimal(20,2)),但也仅仅是将avg计算之后的整形转换为decimail(20,2)保留二位小数。
知道这个原理,我们就好办了!在avg计算之前将数据类型转换。如下尝试:
得到预期结果,小数不是二位没关系,我们可以 在avg计算后的结果再转换一次,保留二们小数!


相关文档:

SQL 2000 分页

SELECT TOP 10 *
from HumanResources.Employee
WHERE EmployeeID NOT IN (SELECT TOP 0 EmployeeID from HumanResources.Employee ORDER BY EmployeeID desc)
ORDER BY EmployeeID desc
—————————————————&md ......

PL/SQL语言(二)

PL/SQL语言
1、可执行部分(BEGIN)
    组成语句:
 
变量赋值语句。
流程控制语句。
数据查询、数据操纵、事务控制语句。
游标语句。
2、可执行部分,SQL语句的使用
在可执行部分,可以使用SQL语句,但是不是所有的SQL语句都可以使用。
可以使用的主要有:SELECT、INSERT、UPDATE、DE ......

一种不错的从SQL转Mysql数据库的方法

年初的时候一直在做一个网站MSSQL2000->MySQL5的迁移工作,因为采用了不同的程序系统,所以主要问题在数据的迁移。由于2个系统数据库结构差异非常大,不方便采取SQLSERVER里导入MYSQL的ODBC数据源的功能(也不推荐这么做,字段类型等不同点会搞死人的~),因此就在WINDOWS下自己写PHP脚本从SQLSERVER里读数据,然后按照 ......

【杂记 关于访问SQL SERVER2005 的系统对象】

SQL SERVER维护着一组表,存储所有对象,数据类型,约束,配置选项及SQL能访问的资源,这些表称为系统目录(系统基本表).
我们在SQL SERVER2005里有很多种方法来访问元数据.一般是使用目录视图和系统函数,信息架构视图只能包含它们全部的一部分.
最佳接口:目录视图
 目录视图都位于SYS架构下,包括了动态管理对象(DMV和DM ......

SQL decimal介绍

具有固定有效位数和小数位数的数值资料类型。
decimal[ (p[ , s] )] and numeric[ (p[ , s] )]
固定有效位数和小数位数的数字。当使用最大有效位数时,有效值是从 - 10^38 +1 到 10^38 - 1。decimal 的 SQL-92 同义字是 dec 和 dec(p, s)。numeric 的功能相当於 decimal。
p (有效位数)
可储存的最大十进位数总数,小 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号