SQL:选择varchar的平均值

时间:2016-05-20 21:04:26

标签: sql sql-server casting average varchar

我想制作一份报告,显示不同任务的平均成绩。

我在如何获得平均值方面遇到了麻烦。我需要弄清楚如何将等级转换成浮点数,以便我可以取平均值。等级有时具有非数字或空值,但大多数值看起来像" 2.0"或" 3.5"。我可以排除任何非数字的东西。

这是我到目前为止所做的:

Select
GradingScores.task As task,
Avg(Cast((SELECT GradingScores.score WHERE GradingScores.score LIKE '%[^0-9]%')As float)) As averages
From
GradingScores 

我使用的是FlySpeed SQL查询。

3 个答案:

答案 0 :(得分:1)

您可以尝试使用IsNumeric

Select
GradingScores.task As task,
Avg(Cast(GradingScores.score as float) As averages
From
GradingScores where IsNumeric(GradingScores.score) = 1

答案 1 :(得分:1)

只需转换()并在T-SQL中使用isnumeric()函数

var theQuery = 'declare @rowsPerPage as bigint; '+
        'declare @pageNum as bigint;'+
        'set @rowsPerPage='+rowsPerPage+'; '+
        'set @pageNum='+page+';   '+
        'With SQLPaging As   ( '+
        'Select Top(@rowsPerPage * @pageNum) ROW_NUMBER() OVER (ORDER BY ID asc) '+
        'as resultNum, * '+
        'FROM myTableName)'+
        'select * from SQLPaging with (nolock) where resultNum > ((@pageNum - 1) * @rowsPerPage);';
sequelize.query(theQuery) 
 .spread(function(result) {
         console.log("Good old paginated results: ", result);
    });
});

答案 2 :(得分:0)

这对我有用:

SELECT AVG(CAST(columnName AS FLOAT)) FROM tableName;