1

这让我发疯,我无法在没有大量代码的情况下管理它,这是我的 sql 表:

userid    date        orderValue
2       2012-01-01      2000
1       2012-01-01      3000
1       2012-01-01      5000
1       2012-01-02      5000
2       2012-01-02      8000
2       2012-01-02      8000

对于每个月,我需要从第一个日期到当月获取每个用户的平均值。

我正在寻找的输出类似于 $orderArray[$month][$userid]['mean']

我不需要代码,只需要让我的头脑摆脱那个人坚持的当前想法。你将如何解决这个问题?

4

2 回答 2

1

类似于以下内容:

SELECT
  `userid`,
  DATE_FORMAT(`date`, '%Y%m') AS `month`,
  AVG(`orderValue`) AS `mean`
FROM
  `orderTable`
GROUP BY
  `userid`,
  `month`

请注意,我使用DATE_FORMAT的是MONTH. 如果你不这样做,2012 年 1 月和 2013 年 1 月将有效地合并,我猜这不是你想要的。

您必须自己在 PHP 中创建所需的结果数组,方法是遍历 SQL 结果集并将每个平均值放在适当的位置。

于 2012-11-23T09:50:27.740 回答
0

试试这个 ::

    Select
    userid,
    SUM(ordervalue)/count(*) as mean

    from table 
    group by 

   userid
于 2012-11-23T09:26:10.317 回答