我在下面的"信息"表中有4列:'creator_id','viewer_id','date_format','donation'

CREATE TABLE information (
    creator_id INT NOT NULL,
    viewer_id INT NOT NULL,
    date_format DATE NOT NULL,
    donation INT NOT NULL
);

INSERT 
    INTO twitch.information(creator_id,viewer_id,date_format,donation) 
    VALUES
    (10,11,'2014-01-02',34),
    (20,14,'2014-01-02',150),
    (30,15,'2014-01-02',717),
    (31,17,'2014-01-02',177),
    (32,17,'2014-01-06',737),
    (33,16,'2014-01-07',37),
    (40,18,'2016-03-08',442),
    (41,19,'2016-03-09',142),
    (42,10,'2016-03-10',152),
    (43,11,'2016-03-11',512),
    (44,12,'2016-01-12',340),
    (60,0,'2012-01-02',1000),
    (70,1,'2012-01-02',100);

SELECT creator_id,
    MAX(SUM(donation)/COUNT(donation)) AS "TOP AVG DONATION CREATOR ON YEAR 2014 (January)"
    WHERE date_format = "2014-01-02"
    FROM twitch.information;

我正在查找在"2014-01-02"日期平均捐赠金额最高的creator\u id,但我的输出控制台出现了以下错误:Error code 1064: you have error in your SQL Syntax; check the manual corresponding...

我相信我的语法有问题,但我不知道是什么.

推荐答案

除了where子句必须出现在from之后的问题之外,您不需要进行除法(这是有风险的,因为可能存在被零除的异常).您可以使用AVG,因此可以通过以下方式找到"在‘2014-01-02’日平均捐赠金额最高的创建者id":

SELECT creator_id,
AVG(donation) AS averageDonation
FROM information
WHERE date_format = "2014-01-02"
GROUP BY creator_id
ORDER BY 2 DESC LIMIT 1;

...或者,如果您想让它更清楚:

SELECT creator_id,
AVG(donation) AS averageDonation
FROM information
WHERE date_format = "2014-01-02"
GROUP BY creator_id
ORDER BY averageDonation DESC LIMIT 1;

Mysql相关问答推荐

对象NotExecutabletry 在远程SQL服务器上执行SQL时出错,并使用SQLAchemy.Create_engine

S在我的SQL代码中的外键出了什么问题?

如何防止程序中计数器出错

MySQL嵌套的内连接使查询变得很慢-解决方案?

返回包含某一列的分组最大值的行,说明列中的重复值

MySQL-带有用户定义变量的IF-THEN语句

警告:MYSQL_OPT_RECONNECT 已弃用

如何将多个字符串插入变量

替代对多个表执行 FULL OUTER JOIN?

使用 autocommit = 0 和 InnoDB 表的 LOCK TABLES 检测死锁

SQL:如何为给定组中的所有记录 Select 一列与另一列不匹配的位置

为生日创建 MySQL 索引

如何让连续 3 周或以上的用户有订单?

MySQL 将分组 JSON Select 转换为单个 JSON 对象

访问 nodejs、mysql 和 json 中的嵌套对象数组

如何根据特定条件从mysql数据库中 Select 查询

此插页中的X是什么> X'3C2F756C3E'

MySQL术语约束与外键的区别?

比较 MySQL 中的日期忽略 DateTime 字段的时间部分

如何在 MYSQL 中使用 SQL 在两个日期时间值之间减go 并以分钟或秒为单位检索结果?