MySQL GROUP BY 如何从第一个元素获取数据

标签 mysql sql date

我有下一个包含数据的表: enter image description here

我运行这个查询:

select *, UNIX_TIMESTAMP(`time`) AS `timeu`, AVG(`value`) AS `valuea`
from `values` 
group by `currency`, DATE(`time` - interval 7 day) 
order by `id` asc 

结果我得到

enter image description here

如您所见 id是:1, 2, 3, 4, 11, 12 。我想要1, 2, 3, 4, 5, 6 - 我怎样才能简单地构建我的查询来做到这一点?

最佳答案

您不会执行分组依据

我怀疑你可以使用相关子查询来做你想做的事情:

select v.*, UNIX_TIMESTAMP(`time`) AS `timeu`,
      (SELECT AVG(`value`)
       from values v2
       where v2.currency = v.currency and
             v2.time >= v2.time - interval 7 day
      ) as `valuea`
from `values` v
order by `id` asc ;

关于MySQL GROUP BY 如何从第一个元素获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29653935/

相关文章:

sql - 具有多个条件的 SQL 选择查询的时间复杂度

php - 跟踪 For 循环的最后一个

mysql - 在 MySQL/MariaDB 中创建存储过程时出错

mysql - 使用 ORDER BY 覆盖索引

javascript - 使用 JQuery/Javascript 获取 2 个日期之间的天数时格式化日期

PHP 获取日期的当前月份

c# - 如何在 DB 和 ORM 中为已知和未知日期部分的混合设计出生日期

PHP MySQL - 从不同的表中选择具有 where-clause 语句的成员

sql - Rails 分页 - 从实例 ID 中查找页码

sql - 直接执行自定义 SQL 时,django-mssql 中的查询超时过期