mysql - 仅当存在多个不等于 0 的值时,SQL 查询平均值才存在?

标签 mysql sql

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

相关文章:

php - 将 WordPress 网站迁移到本地主机

mysql - 如何将日期时间转换为日期,截断时间,留下日期?

sql - 仅反转sql server中字符串的数字部分

mysql - 有条件地创建索引?

php - sql查询多表查询问题

mysql - 外键语法

PHP MySQL - 递归函数的尝试

php - 我如何为帐户创建定时禁令? (PHP/MySQL)

MySQL - 使用 COUNT 进行更新,可能吗?

sql - 在 Oracle/SQL 中如何选择列值保持不变的行