2015-03-18 3 views
3

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 неделе, 2 заказов, созданные для компании ABC А в 23Feb-01Mar неделе, 1 заказ, созданные для компании ABC, я хочу, чтобы показать общее количество заказа генерируется до 01 Mar Week, поэтому мне нужен выход 3.

Пожалуйста, помогите!

+0

Что бы выход, если бы Мэри была несколько заказов тоже? – eggyal

+0

@eggyal, да, я хочу показать записи для всех пользователей и компаний. Требуется обновление ... – Aruti

+0

Хорошо. Хотя этот точный вывод можно создать исключительно с использованием SQL, некоторые элементы (а именно форматирование столбца «День недели» и объединенная группировка в столбце «Конвейеры трубопроводов») гораздо более подходят для выполнения на уровне представления вашего кода приложения. Поскольку MySQL не имеет встроенной поддержки аналитических функций, агрегирование «заказов на конвейер» также легче выполнять на уровне доступа к данным, чем в самих РСУБД. Вам действительно нужен набор результатов SQL для * точно *, как показано? – eggyal

ответ

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 

срок должен быть в подпункте select t.

если вам не нравится формат недели, изменить их изменить формат даты первой линии в

here SqL скрипку

+0

Спасибо за ваши усилия .. он не работает :( – Aruti

+0

@Aruti использовать скрипт sql проверен, и он хорошо работает, нажмите на ссылку, которую я даю из ответа, чтобы увидеть ее самостоятельно – amow

+0

@ amow Я проверил sql fi ddle. Я думаю, что для aruti требуется, чтобы «количество счетов, общее количество которых не было, составляет от начального до недельного формата». т.е. между 2015-02-23 по 2015-03-01 компания ABC приходит 1 раз, но здесь требуется 3 – Sudhir

Смежные вопросы