sql - 这段代码中的 IF 语句有什么问题?

标签 sql sum mariadb max average

select studentid,
sum(score) 'Total',
avg(IF(score>85)) 'Average',
max(score) 'Maximum',
min(score) 'Minimum'
from results
group by studentid;

错误消息:

You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ')) 'Average',

max(score) 'Maximum',

最佳答案

您没有正确使用 if() 函数 - 并且您不应该使用单引号作为结果集中的列的别名。

您可能想要:

select 
    studentid,
    sum(score) Total,
    avg(score > 85) Average,
    max(score) Maximum,
    min(score) Minimum
from results
group by studentid;

avg(score > 85) 给出高于 85 的分数的比率,以 01 之间的十进制数表示。

另一方面,如果您希望平均分高于 85 分,您可以这样做:

    avg(case when score > 85 then score end) Average

关于sql - 这段代码中的 IF 语句有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63674446/

相关文章:

java - 如何在方法中添加数组元素?

mariadb - 如何使用 MariaDB 的 REGEXP_REPLACE?

sql - 在sql中将varchar转换为datetime

php - 使用子查询插入查询

mysql - 如果两个参数都不为空

mysql - 我如何得到 OR 到 SUM(IF()) MySQL

PHP PDO 计算数据库中所有表的行数

MySQL 查询在新服务器上花费太多时间

Mysql Select Before Time on date 指定日期

mysql - 仅选择表中的公共(public)字段