gpt4 book ai didi

mysql - 聚合订单

转载 作者:行者123 更新时间:2023-11-29 03:42:26 25 4
gpt4 key购买 nike

我在使用 mysql 中的聚合公式时遇到了一些问题。我怀疑错误是因为计算机在排序/排序之前正在聚合。有人可以建议一种更好的方法来聚合计数值,或者帮助我识别代码中的错误吗?这是结果表

date                hour         count     aggregate
August, 11 2012 20 1 170
August, 12 2012 19 1 58
August, 13 2012 14 1 44
August, 13 2012 15 1 75
August, 13 2012 21 1 72
August, 13 2012 23 1 80

表格先按日期排序,如果两次是同一天,则按小时排序。由于聚合函数是基于计数函数的,而计数列只填充了 1,聚合列应该显示 1, 2, 3, 4 ...等这是我的查询

SELECT   t1.original, t1.hour, t1.count,  SUM(t2.count) as aggregate 
FROM
(SELECT date(FROM_UNIXTIME( timecode)) as day,(hour(FROM_UNIXTIME( timecode))) AS hour,(FROM_UNIXTIME( timecode)) AS original, COUNT(count) as 'count'

FROM sampleData
GROUP BY day, hour
order by original
) t1
INNER JOIN
(SELECT date(FROM_UNIXTIME( timecode)) as day, (hour(FROM_UNIXTIME( timecode) )) AS hour,(FROM_UNIXTIME( timecode)) AS original, COUNT(count) as 'count'
FROM sampleData
GROUP BY day, hour
order by original
) t2
on t1.hour >= t2.hour
GROUP BY t1.hour
ORDER BY t1.original

最佳答案

您的查询中有两点很突出。

首先,连接没有意义,因为它只在小时内。

我建议将其替换为:

t1.day > t2.day 或(t1.day = t2.day and t1.hour >= t2.hour)

其次,您在外部 SELECT 中有 original 和 count,但它们不在 group by 子句中。我认为更好的做法是将它们放在 group by 子句中或使用显式聚合函数(在本例中为 MIN() 或 MAX())。这可以防止错误。

关于mysql - 聚合订单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11961448/

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