我的应用中有一个出价表,我需要计算过去6个月内每位用户的平均出价数。表信息如下:
`bid_id` int(10)
`catalog_item_id`
`customer_id` int(10)
`amount` decimal(9,2)
`date_modified` datetime
所以基本上我需要使用where date_modified > "2012-07-31"
来限制过去6个月,然后按照这些月份中的每6个以某种方式分组,1)计算出价和用户出价的数量,然后我会做我们总投标人的平均数据。
这甚至有意义吗?我的方法有误吗?任何帮助将非常感激!
答案 0 :(得分:1)
试试这个:
SELECT COUNT(`bid_id`) `bids_per_month`,
COUNT(DISTINCT `customer_id`) `bidders_per_month`,
COUNT(`bid_id`)/COUNT(DISTINCT `customer_id`) `avg_per_month`,
YEAR(`date_modified`) `year`, MONTH(`date_modified`) `month`
FROM bids
WHERE DATE(`date_modified`) > DATE_SUB(CURDATE(), INTERVAL 6 MONTH)
GROUP BY `year`, `month`
显然,DATE_SUB(CURDATE(), INTERVAL 6 MONTH)
可以替换为静态日期'2012-07-31'