SET无效使用组功能使用AVG
SET invalid use of group function using AVG
我想声明一个变量叫average,应该是todolist中项目的完成日期-创建日期的平均值。
但是,如果我使用这些代码行,mysql 会告诉我语法错误。
有人能告诉我应该更改什么以在@average 中存储正确的值吗?
SET @average = AVG(todoitem.completiondate-todoitem.creationdate) from todolist
right join todoitem on todoitem.id=todolist.id
;
SELECT name FROM todolist
right join todoitem on todoitem.id=todolist.id
WHERE (todoitem.completiondate-todoitem.creationdate > average)
;
您在第一个查询中缺少 select
:
select @average := AVG(todoitem.completiondate - todoitem.creationdate)
from todolist right join
todoitem
on todoitem.id = todolist.id;
虽然我将其保留,但 join
似乎没有必要。如果您只使用一个 table,为什么要进行连接?
select @average := AVG(todoitem.completiondate - todoitem.creationdate)
from todoitem;
您必须添加 SELECT:
SET @average = (SELECT AVG(todoitem.completiondate-todoitem.creationdate))
from todolist
right join todoitem on todoitem.id=todolist.id
-- or
SELECT AVG(todoitem.completiondate-todoitem.creationdate) INTO @average
from todolist
right join todoitem on todoitem.id=todolist.id
我想声明一个变量叫average,应该是todolist中项目的完成日期-创建日期的平均值。
但是,如果我使用这些代码行,mysql 会告诉我语法错误。
有人能告诉我应该更改什么以在@average 中存储正确的值吗?
SET @average = AVG(todoitem.completiondate-todoitem.creationdate) from todolist
right join todoitem on todoitem.id=todolist.id
;
SELECT name FROM todolist
right join todoitem on todoitem.id=todolist.id
WHERE (todoitem.completiondate-todoitem.creationdate > average)
;
您在第一个查询中缺少 select
:
select @average := AVG(todoitem.completiondate - todoitem.creationdate)
from todolist right join
todoitem
on todoitem.id = todolist.id;
虽然我将其保留,但 join
似乎没有必要。如果您只使用一个 table,为什么要进行连接?
select @average := AVG(todoitem.completiondate - todoitem.creationdate)
from todoitem;
您必须添加 SELECT:
SET @average = (SELECT AVG(todoitem.completiondate-todoitem.creationdate))
from todolist
right join todoitem on todoitem.id=todolist.id
-- or
SELECT AVG(todoitem.completiondate-todoitem.creationdate) INTO @average
from todolist
right join todoitem on todoitem.id=todolist.id