易截截图软件、单文件、免安装、纯绿色、仅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计算后的结果再转换一次,保留二们小数!


相关文档:

自己写的oracle dbms_sql 函数包例子

create or replace procedure pro_insert_dbms
is
cid number;
cid_DDL number;
selectsql varchar2(1000);
ddlsql    varchar2(1000);
row_count number;
nofrows   integer;
lrowid                & ......

sql语法


 
 
SQL语法手册
Select
用途:
 从指定表中取出指定的列的数据
语法:
 
SELECT column_name(s) from table_name
 
解释:
从数据库中选取资料列,并允许从一或多个资料表中,选取一或多个资料列或资料行。SELECT 陈述式的完整语法相当复杂,但主要子句可摘要为:
SELECT select_ ......

MySQL导入/导出.sql文件


导出.sql文件
1.将数据库transfer_server_db导出到transfSRV.sql文件中:
    mysqldump -u root -p transfer_server_db > /home/eric/transfSRV.sql
2.将数据库transfer_server_db中的device_info_table导出到table.sql文件中:
    mysqldump -u root -p transfer_server_db devi ......

select 1 from ... sql语句中的1代表什么意思?

select 1 from table;与select anycol(目的表集合中的任意一行) from table;与select * from table 从作用上来说是没有差别的,都是查看是否有记录,一般是作条件查询用的。select 1 from 中的1是一常量(可以为任意数值),查到的所有行的值都是它,但从效率上来说,1>anycol>*,因为不用查字典表。 ......

SQL Char 、VarChar和NVarChar的区别

char、varchar、text和nchar、nvarchar、ntext  
     
char和varchar的长度都在1到8000之间,它们的区别在于char是定长字符数据,而varchar是变长字符数据。所谓定长就是长度固定
的,当输入的数据长度没有达到指定的长度时将自动以英文空格在其后面填充,使长度达到相应的长度;而变 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号