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个。
请帮忙!
答案 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