gpt4 book ai didi

mysql - 如何在Mysql中按天计数

转载 作者:行者123 更新时间:2023-11-28 23:20:39 24 4
gpt4 key购买 nike

此表包含按时间戳记的小时订单数:

订单

id, created_at, items
1, 1484827200, 5
2, 1484830800, 10
3, 1484913600, 10

//如何获取每天的元素数量?类似的东西:

2016-01-19, 15
2016-01-20, 10

我的查询:

SELECT sum(items)
FROM orders
GROUP BY EXTRACT(DAY_HOUR FROM created_at)

不正确。

SELECT day(from_unixtime(created_at)), sum(items)
FROM orders
GROUP BY day (from_unixtime(created_at))

太慢了。

最佳答案

1。添加一个名为“Day”的字符串列,该列也被编入索引

理想情况下,您应该包含一个日期列,并更新所有行。将日期时间存储为 unix 时间戳并每次都转换它们会导致以下问题:

  • 您必须为每一行运行 from_unixtime,然后还要提取日期。
  • 您正在牺牲可能与索引列一起正常工作的任何类型的优化。 Unix 时间戳数字,与日期相比,本质上是橙子化。

因此,如果此查询很关键,我会添加一个 day 列,并保存日期和时间戳以获得最大速度。还要为您的日期列编制索引。

2。实验

  • 尝试使用别名表,然后进行分组。我有一种感觉,优化器以这样一种方式进行优化,它可能不会产生任何不同,但您可能会运行 from_unixtime 2 次而不是一次(这需要检查):

    选择 天, SUM(项目)来自(选择 DAY(from_unixtime(created_at)) 作为一天, 项目FROM 订单) AS tempGROUP BY temp.day

我不确定 from_unixtime 转换是否在 group by 中再次运行。

关于mysql - 如何在Mysql中按天计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41760975/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com