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来模拟未来一周,那么前一周有交易的所有人都不会显示,
谢谢,
约翰,
查询的图像
答案 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函数
答案 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