sql中详解round(),floor(),ceiling()函数的用法和区别?
来源:互联网 发布:第一个python api开发 编辑:程序博客网 时间:2024/05/29 17:20
sql中详解round(),floor(),ceiling()函数的用法和区别?
round() 遵循四舍五入把原值转化为指定小数位数,
如:round(1.45,0) = 1;round(1.55,0)=2
floor()向下舍入为指定小数位数 如:floor(1.45,0)= 1;floor(1.55,0) = 1
ceiling()向上舍入为指定小数位数 如:ceiling(1.45,0) = 2;ceiling(1.55,0)=2
SQL中ISNULL用法示例
[csharp]
declare
@tempTable
table
(
stuname
nchar
(10),
stuage
int
,
stuscore
float
);
insert
into
@tempTable
select
name
,age,
ISNULL
(score,0)
from
tb_Student
where
ISNULL
(score,0)<=60
select
*
from
@tempTable
sql 中isnull函数的用法:
declare @t table
( id int identity(1,1),
UserId varchar(10),
Odds int)
insert @t select 'a',12
union all select 'b',23
union all select 'c',34
select isnull(userid,'total') as userid,
sum(odds) as odds from @t
group by userid
with rollup
/**userid odds--------------
a 12
b 23
c 34
total 69**/
1. ISNULL使用指定的替换值替换 NULL。
语法ISNULL ( check_expression , replacement_value )
注释
2. ROLLUP ( )生成简单的 GROUP BY 聚合行以及小计行或超聚合行,还生成一个总计行。
返回的分组数等于 <composite element list> 中的表达式数加一。
例如,请考虑下面的语句。
SELECT a, b, c, SUM ( <expression> )FROM T
GROUP BY ROLLUP (a,b,c)
会为 (a, b, c)、(a, b) 和 (a) 值的每个唯一组合生成一个带有小计的行。
还将计算一个总计行。
列是按照从右到左的顺序汇总的。
列的顺序会影响 ROLLUP 的输出分组,而且可能会影响结果集内的行数。
可方便的生成"合计"、"小计"、"总计" 等混合统计的报表
如下数据集A经过ROLLUP运算可生成数据集B
SELECT Groups,Item,Color FROM @t GROUP BY Groups,Item,Color WITH ROLLUP
查询结果如下:
维:查询所指定的列称为维,列的个数称为维度
以上两个SQL语句涉及三个维度,ROLLUP和CUBE都可以用于多维计算,不同点在于CUBE可以包含所有纬度的组合,而
ROLLUP只涉及指定列的维度计算。
GROUPING:判断是否为多维计算中的附加列,如果是则输出1,否则输出0
SELECT * FROM @t ORDER BY groups DESC
结果:
WHEN GROUPING(Color)=0 THEN Groups
WHEN GROUPING(Groups)=1 THEN '总计'
ELSE '' END,
Item=CASE
WHEN GROUPING(Color)=0 THEN Item
WHEN GROUPING(Item)=1 THEN Groups+' 合计'
ELSE '' END,
Color=CASE
WHEN GROUPING(Color)=0 THEN Color
WHEN GROUPING(Color)=1 THEN Item+' 小计'
ELSE '' END,
Quantity=SUM(Quantity)
FROM @t
GROUP BY Groups,Item,Color WITH ROLLUP
ORDER BY GROUPING(Groups),
CASE WHEN GROUPING(Groups)=0 THEN Groups END DESC,
GROUPING(Item),
CASE WHEN GROUPING(Item)=0 THEN Item END DESC,
GROUPING(Color),
CASE WHEN GROUPING(Color)=0 THEN Color END DESC
CUBE generates a result set that shows aggregates for all combinations of values in the selected columns.
可以看到Cube 比 RollUp多了三行.一比较发现,多的三行都是以Color列为纬度统计的。再结合书上说的那点区别,说RollUp是按层统计的。
猜想区别就是Cube对每个纬度都统计了,而RollUp对Group by 后跟的第一个纬度按照值不同顺序统计完后,终止在Null,NUll,1117这一行,不再继续。
我又加了一列Dept,调整之后再次比较结果,证实了我的猜想,RollUp以Item作为基本纬度,统计完所有情况后,就终止在Null,Null,NUll,1117这一行了。下面附上sql语句:
CREATE TABLE Inventory (
Item varchar(53) NOT NULL,
Color varchar(53) NULL,
Department varchar(53) Null,
Quantity int NULL
);INSERT Inventory VALUES ('Table', 'Red','IT', 223);
INSERT Inventory VALUES ('Table', 'White','HR', 54);
INSERT Inventory VALUES ('Table', 'Blue','ADM', 124);
INSERT Inventory VALUES ('Chair', 'Red', 'IT',210);
INSERT Inventory VALUES ('Chair', 'Blue','HR', 101);
INSERT Inventory VALUES ('Chair', 'White','ADM', 23);
INSERT Inventory VALUES ('Stand', 'Red','IT', 213);
INSERT Inventory VALUES ('Stand', 'Blue','HR', 141);
INSERT Inventory VALUES ('Stand', 'White','ADM', 28);SELECT * FROM Inventory
SELECT Item, Color, Department,SUM(Quantity) AS Quantity
FROM Inventory
GROUP BY Item, Color,Department WITH CUBE;SELECT Item, Color, Department,SUM(Quantity) AS Quantity
FROM Inventory
GROUP BY Item, Color,Department WITH Rollup
- sql中详解round(),floor(),ceiling()函数的用法和区别?
- SQL 中详解round(),floor(),ceiling()函数的用法和区别?
- sql中详解round(),floor(),ceiling()函数的用法和区别
- sql中详解round(),floor(),ceiling()函数的用法和区别?
- sql中详解round(),floor(),ceiling()函数实例
- sql中round(),floor(),ceiling()的实用场景
- Sql : ceiling floor Round 小数位
- 比较sql中CEILING 和FLOOR
- ROUND(),CEILING()和FLOOR()例子
- (sql) CEILING函数, FLOOR 函数
- SQL SERVER FLOOR(),CEILING()函数
- sqlserver中的 CEILING函数和 FLOOR函数
- SQLServer CEILING函数和 FLOOR函数
- SQLServer CEILING函数和 FLOOR函数
- SQLSERVER中的 CEILING函数和 FLOOR函数
- SQL Server 随机数,随机区间,随机抽取数据rand(),floor(),ceiling(),round(),newid()函数等
- C#取整函数Math.Round、Math.Ceiling和Math.Floor
- C#取整函数Math.Round、Math.Ceiling和Math.Floor
- 【2016】心有猛虎,细嗅蔷薇In me the tiger sniffs the rose
- 计算机十二种常用密码的破解方法
- 成为一名合格的ERP实施顾问应该具备哪些修为
- java.lang.IndexOutOfBoundsException: Invalid index 17, size is 10
- failed to connect to /127.0.0.1 (port 80) after 10000ms: isConnected failed: ECONNREFUSED (Connectio
- sql中详解round(),floor(),ceiling()函数的用法和区别?
- codeforces比赛记录
- Android创建自定义系统键盘
- throw 与throws
- 量化分析师的Python日记【Q Quant兵器谱之函数插值】
- Oracle_sql_(4)
- 编译Hbase-thrift-php客户端
- 最简单的隐藏文件夹方法
- anaconda 使用import sklearn.model_selection 出错ImportError: No module named model_selection