Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL代码无法以百分比格式显示考勤_Sql - Fatal编程技术网

SQL代码无法以百分比格式显示考勤

SQL代码无法以百分比格式显示考勤,sql,Sql,我在添加条件以仅显示出席人数少于81的人时遇到困难 SELECT Absence.StudentID AS StudentNumber, Student.NAME AS "Student Name", Subject.NAME AS "Subject Name", CONVERT(VARCHAR, 100 - (100 * count(*) / 10)) AS 'Attendance(%)' FROM Absence, Subject, Student, (

我在添加条件以仅显示出席人数少于81的人时遇到困难

SELECT Absence.StudentID AS StudentNumber,
   Student.NAME AS "Student Name",
   Subject.NAME AS "Subject Name",
   CONVERT(VARCHAR, 100 - (100 * count(*) / 10)) AS 'Attendance(%)'
FROM Absence,
   Subject,
   Student,
   (
      SELECT COUNT(*) AS tot
      FROM Absence
      ) x
WHERE Subject.SubjectCode = Absence.SubjectCode
   AND Student.StudentNumber = Absence.StudentID
GROUP BY Absence.StudentID,
   Subject.NAME,
   Student.NAME;

上面的代码正好显示了我想要的内容,但我不能仅在条件中添加。我的出席率(%)已经是整数了,对吗?因此,使用强制转换或转换也不起作用。它说它在转换时有问题。

这是数学中的一个不合法的数据类型转换

选择
100/50为整数

,100.00/50.00作为nbrMath

当尝试获取百分比时,它被乘以100,是一个十进制,这似乎不是代码的工作方式:

SELECT (CAST(9 AS DECIMAL(5,2))/CAST(10 AS DECIMAL(5,2)))*CAST(100 AS DECIMAL(5,2))
-- Returns 90.00

SELECT (CAST(9 AS INT)/CAST(10 AS INT))*CAST(100 AS INT)
-- Returns 0
使用您的OP示例:

SELECT CAST(100 AS DECIMAL(5,2)) - ((CAST(100 AS DECIMAL(5,2)) * CAST(8 AS DECIMAL(5,2))) / CAST(10 AS DECIMAL(5,2)))
-- Returns 20.00

-- Formatted with a percent:
SELECT SUBSTRING(CAST(CAST(100 AS DECIMAL(5,2)) - ((CAST(100 AS DECIMAL(5,2)) * CAST(8 AS DECIMAL(5,2))) / CAST(10 AS DECIMAL(5,2))) AS VARCHAR(25)),1,5) + '%'

注意:这适用于
SQL Server
。90%是.9,当它被转换为INT时,它被视为0

您试图添加什么条件,以及尝试时会发生什么情况?哦,顺便说一下,你需要双引号,而不是单引号围绕你的百分比别名。opps-我的分子和分母颠倒了,但概念是一样的,在你的数学中使用100.00而不是100。