2

1 つのテーブルでさまざまな条件をカウントしたいと思います。

SELECT gt.smechanic as 'Mech ID', 
       gm.mechanic_name as 'Mech Name', 
       count(gt.smechanic) as 'Total Invoices Not Received',
       count(if(datediff(gt.dispatch_date, curdate()) < 10,1,0)) as 'Within 10 days' 
from gt 
straight_join gm on gt.smechanic = gm.mechanic_id 
where gt.status = 3 or gt.status = 5 
group by gt.scheduled_mechanic

両方の列で同じ値をカウントしているため、このステートメントで自分自身をキャンセルしているかどうかはわかりません。

4

1 に答える 1

3

SUM()2番目の列で使用する必要がありCOUNT()ます.

SUM(IF(DATEDIFF(gt.dispatch_date, CURDATE()) < 10, 1, 0))

また、グループ化していない非集計列を選択すると、予測できない結果に対して脆弱になることも指摘しておきます。その GROUP BY 句を次のように変更します

GROUP BY gt.smechanic, gm.mechanic_name
于 2012-09-21T18:52:30.007 に答える