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 

任何人都可以帮我解决这个问题,我知道它很乱,但我对此很陌生,

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

谢谢,

约翰,

查询的图像

4

3 回答 3

1

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

WHERE b.dealdate IS NULL OR YEARWEEK( b.dealdate ) = YEARWEEK( NOW( ) ) +1
于 2013-02-27T15:56:42.467 回答
1
WHERE b.dealdate IS NULL OR WEEKOFYEAR( b.dealdate ) = WEEKOFYEAR( date_add(NOW( ), interval 1 week))

使用 mysql 的间隔功能,以及 date_add 或 date_sub 函数

参考

于 2013-02-27T15:59:04.660 回答
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
于 2013-02-28T12:14:36.837 回答