Mysql复杂的查询

时间:2013-01-31 23:36:36

标签: mysql

我的应用中有一个出价表,我需要计算过去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)计算出价和用户出价的数量,然后我会做我们总投标人的平均数据。

这甚至有意义吗?我的方法有误吗?任何帮助将非常感激!

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'