mysql按工作日选择计数组的总和

时间:2015-03-18 08:32:32

标签: mysql

Mysql查询我有以下表格

公司表: -

id company_name company_createddate
1  ABC           2015-01-01 12:45:23
2  LMN           2015-01-11 09:45:23
3  PQR           2015-02-16 23:45:23

用户表: -

id username
1  John
2  Mary

订单表: -

id company_id user_id order_name  order_createddate
1  1          1       Sales       2015-02-16 09:45:23
2  1          1       Sales3      2015-02-20 09:45:23
3  1          1       Marketing   2015-02-24 09:45:23
4  2          1       Sales2      2015-02-17 09:45:23
5  1          2       M1          2015-02-16 09:45:23
6  2          2       M2          2015-02-23 09:45:23
7  2          2       P1          2015-02-26 09:45:23

需要输出: -

Week day          user name     Pipeline Orders
16 Feb - 22 Feb   John          2 (ABC), 1(LMN)
23 Feb - 01 Mar   John          3 (ABC), 1(LMN)
16 Feb - 22 Feb   Mary          1 (ABC)
23 Feb - 01 Mar   Mary          1 (ABC), 2(LMN)

周日是order_createddate 在16Feb-22Feb周,为ABC公司创建了2个订单 在23Feb-01Mar周期间,为公司ABC创建了1个订单,我想显示截至3月1日周的订单总数,所以我需要输出3个。

请帮忙!

1 个答案:

答案 0 :(得分:0)

select concat(STR_TO_DATE(concat('2015 ',wk,' 1'), '%Y %u %w'), ' to ',
STR_TO_DATE(concat('2015 ',wk,' 0'), '%Y %u %w')),
User.username, GROUP_CONCAT(som) from (
select DATE_FORMAT(order_createddate,'%u') wk,user_id,
concat(Company.company_name ,'(',CONVERT(count(1),CHAR),')') som from `Order`
join Company on `Order`.company_id = Company.id
group by wk,user_id,company_name ) t 
join User on t.user_id = User.id
group by wk, User.username

时间限制应该在子选择条款t。

如果您不喜欢周格式,请通过修改第一行的日期格式来更改它们

sql fiddle here