2013-02-27 2 views
1
SELECT a.agent, a.talktime, a.percentclosed,COALESCE(COUNT(b.dealamount),0),COALESCE(SUM(b.dealamount),0) , b.dealdate 
FROM closers a 
LEFT JOIN deals b ON a.agent = b.agent 
WHERE b.dealdate IS NULL OR YEARWEEK(b.dealdate) = YEARWEEK(NOW()) 
GROUP BY a.agent 
ORDER BY COALESCE(SUM(b.dealamount) , 0) DESC 

Может кто-нибудь помочь мне исправить этот запрос я знаю его неаккуратно, но им новичок в этом,MYSQL Query работает на текущей неделе не следующий

Это прекрасно работает для текущей недели, но если я добавить +1 к имитации будущей неделе все, кто имеет дело за неделю до не показывает,

Спасибо,

Джон,

ОБРАЗ QUERY'S

+0

Где вы добавили +1 и как? – fancyPants

+0

, пожалуйста, покажите свой код, вы являетесь результатом и тем, что ищете. – Hituptony

ответ

1

WEEKOFYEAR не подходит в этом случае, потому что он завернется в конце года. Вы должны использовать YEARWEEK().

WHERE b.dealdate IS NULL OR YEARWEEK(b.dealdate) = YEARWEEK(NOW()) +1 
+0

Я попробовал, но все же только агенты, у которых не было сделок, показывают, что мне нужно показать все, даже если у них нет сделок на текущую неделю. –

+1

Это отличается от того, что вы просите. Если вам нужно показать каждого агента, удалите условие на неделе. Укажите, что должно делать ваш запрос. – Ghigo

+0

Я показываю текущие сделки на этой неделе, цель состоит в том, что у каждого агента есть 0 сделок, и все они показывают на текущую неделю –

1
WHERE b.dealdate IS NULL OR WEEKOFYEAR(b.dealdate) = WEEKOFYEAR(date_add(NOW(), interval 1 week)) 

использовать интервальный особенность MySQL, и DATE_ADD или DATE_SUB функцию

Reference

+0

Я пробовал, чтобы получил тот же результат, мне нужно, чтобы это была текущая неделя с понедельника по воскресенье не последние 7 дней –

+0

Я ничего не менял ... – Hituptony

1

получил его на работу !,

SELECT a.agent, a.talktime, a.percentclosed, COALESCE(COUNT(b.dealamount) , 0)  ,COALESCE(SUM(b.dealamount) , 0) , b.dealdate 
FROM closers a 
LEFT JOIN deals b ON a.agent = b.agent 
AND WEEKOFYEAR(b.dealdate) = WEEKOFYEAR(NOW()) 
WHERE b.dealdate IS NULL 
OR WEEKOFYEAR(b.dealdate) = WEEKOFYEAR(NOW()) 
GROUP BY a.agent 
ORDER BY COALESCE(SUM(b.dealamount) , 0) DESC 
LIMIT 0 , 30 
Смежные вопросы