0

如果特定 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...
4

1 回答 1

2

关于什么:

SELECT AVG(days_since) AS days_out
  FROM User_123
 WHERE Item_ID = 645
   AND Days_Since <> 0
HAVING COUNT(*) > 1

我不确定 ORDER BY 和 LIMIT 子句的用途,因此您必须调整答案以重新施加它们所暗示的条件。


如何在重新应用 Order By 和 Limit 时保持工作。使用这些以便在平均计算中仅使用 5 个最近的条目。

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;
于 2012-07-01T16:52:40.093 回答