MYSQL查询适用于本周而非下一个

时间:2013-02-27 15:49:52

标签: mysql database intervals

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 

任何人都可以帮我解决这个问题吗?我知道这个问题很乱,但我是新手,

这适用于本周,但如果我添加+1来模拟未来一周,那么前一周有交易的所有人都不会显示,

谢谢,

约翰,

查询的图像

3 个答案:

答案 0 :(得分:1)

WEEKOFYEAR在这种情况下并不好,因为它会在年底结束。你应该使用YEARWEEK()。

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

答案 1 :(得分:1)

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

使用mysql的interval特性,以及date_add或date_sub函数

Reference

答案 2 :(得分: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