Sql 添加学分(十进制)
我在求列的实际值的总和时遇到了一个问题。看来我只是被返回行计数。我有一张学生表,上面有上过课的学生和那门课的学分Sql 添加学分(十进制),sql,sql-server,Sql,Sql Server,我在求列的实际值的总和时遇到了一个问题。看来我只是被返回行计数。我有一张学生表,上面有上过课的学生和那门课的学分 Create table #tempy ( student_name varchar(50), class varchar(50), credits decimal ) Insert into #tempy (student_name, class, credits) Values('Chris','Math', 0.5
Create table #tempy (
student_name varchar(50),
class varchar(50),
credits decimal
)
Insert into #tempy (student_name, class, credits)
Values('Chris','Math', 0.5), ('Chris', 'Science', 0.5), ('Jill', 'Reading', 1.0), ('Sarah', 'Math',0.5)
Select student_name, Sum(credits) as credits
From #tempy
Group by student_name
Drop Table #tempy
Chris总共应获得1
学分。相反,我得到了2
。
莎拉也一样,她应该得到
.5
学分。但是得到1就好像它只是在添加行计数。您必须指定小数点的大小。在create语句中尝试十进制(9,2)
create table #tempy (
student_name varchar(50),
class varchar(50),
credits decimal(9,2)
)
Insert into #tempy (student_name, class, credits) Values
('Chris','Math', 0.5)
, ('Chris', 'Science', 0.5)
, ('Jill', 'Reading', 1.0)
, ('Sarah', 'Math',0.5)
Select student_name, credits=sum(credits)
From #tempy
Group by student_name
Drop Table #tempy
导致
+--------------+---------+
| student_name | credits |
+--------------+---------+
| Chris | 1.00 |
| Jill | 1.00 |
| Sarah | 0.50 |
+--------------+---------+
您必须指定小数点的大小。在create语句中尝试
十进制(9,2)
create table #tempy (
student_name varchar(50),
class varchar(50),
credits decimal(9,2)
)
Insert into #tempy (student_name, class, credits) Values
('Chris','Math', 0.5)
, ('Chris', 'Science', 0.5)
, ('Jill', 'Reading', 1.0)
, ('Sarah', 'Math',0.5)
Select student_name, credits=sum(credits)
From #tempy
Group by student_name
Drop Table #tempy
导致
+--------------+---------+
| student_name | credits |
+--------------+---------+
| Chris | 1.00 |
| Jill | 1.00 |
| Sarah | 0.50 |
+--------------+---------+
您必须指定
十进制
字段的精度;与此类似,充当默认的decimal(18,0)
字段(18位带0位小数)
这应该做到:
Create table #tempy (
student_name varchar(50),
class varchar(50),
credits decimal(5,2) -- 5 digits, 2 of them decimals
)
您必须指定
十进制
字段的精度;与此类似,充当默认的decimal(18,0)
字段(18位带0位小数)
这应该做到:
Create table #tempy (
student_name varchar(50),
class varchar(50),
credits decimal(5,2) -- 5 digits, 2 of them decimals
)