如果特定 item_id 存在两个或多个非零值,我只想计算值的 AVG。如果不存在两个或多个非零值,我不想计算 AVG。
当前的 SQL 如下。也许应该先有一个 if 子句?...有什么想法吗?
SELECT AVG( days_since ) AS days_out
FROM (
SELECT days_since
FROM user_123
WHERE item_id = 645
AND days_since <> 0
ORDER BY id DESC
LIMIT 5
) AS recent
看起来 If 子句可能有效;
IF SELECT COUNT (*), item_id, days_since >= 2
where days_since <>0, then perform AVG...
最佳答案
关于:
SELECT AVG(days_since) AS days_out
FROM User_123
WHERE Item_ID = 645
AND Days_Since <> 0
HAVING COUNT(*) > 1
我不确定 ORDER BY 和 LIMIT 子句的用途,因此您必须调整答案以重新施加它们隐含的条件。
<小时/>How to keep it working while reapplying Order By and Limit. These are used so that only the 5 most recent entries are used in the Average calculation.
SELECT AVG(days_since) AS days_out
FROM (SELECT days_since
FROM User_123
WHERE Item_ID = 645
AND Days_Since <> 0
ORDER BY ID DESC
LIMIT 5
) AS u
HAVING COUNT(*) > 1;
关于mysql - 仅当存在多个不等于 0 的值时,SQL 查询平均值才存在?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11283843/