以下の画像を出力する以下のmysqlクエリがあります:
select
v.invoicenumber,
v.invoicedate,
v.haulier,
v.transporttype,
count(v.loadnumber) as totalloads,
sum(v.cost) as totalcost,
concat(SUM(if(invoiceapproved = 'yes', 1, 0)),' / ',count(v.loadnumber)) AS count, SUM(if(invoiceapproved = 'yes', 1, 0)) as approved
from v2loads v
where v.invoiced='yes'
group by invoicenumber
このクエリは100%実行されます。
私がやりたいのは、カウントが100%の行/データを除外することです。出力例では、請求書16が2/2で100%であるため、フィルターで除外します。だからどこに
count(v.loadnumber) <> SUM(if(invoiceapproved = 'yes', 1, 0))
このロジックをwhere句に追加すると、グループ関数の無効な使用エラーで失敗します。したがって、以下のコードは機能しません。
select v.invoicenumber,
v.invoicedate,
v.haulier,
v.transporttype,
count(v.loadnumber) as totalloads,
sum(v.cost) as totalcost,
concat(SUM(if(invoiceapproved = 'yes', 1, 0)),' / ',count(v.loadnumber)) AS count,
SUM(if(invoiceapproved = 'yes', 1, 0)) as approved
from v2loads v
where v.invoiced='yes' and
(count(v.loadnumber))<>(SUM(if(invoiceapproved = 'yes', 1, 0)))
group by invoicenumber
次のエラーが発生しました:
エラーは
#1111
-グループ関数の使用が無効です。
いつものようにアドバイスをいただければ幸いです。