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 を追加して将来の週をシミュレートすると、前の週に取引を行った全員が表示されなくなります。

ありがとう、

ジョン、

QUERY'Sのイメージ

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 の interval 機能と、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 に答える