は、私は以下のようにテーブルがある - 今すでにMySQLで集約されたSQL出力によってグループ化された上の集約を実行
Employee -
Employee_Id Name Limit_Amt
1 Sachin 3000
2 Mahi 2500
Employee_Wage -
Employee_Id Amount Pay_Date
1 200 2017-01-01
1 250 2017-02-01
1 300 2017-03-01
2 350 2017-01-01
2 400 2017-02-01
2 300 2017-03-01
クエリ以下、個々の従業員のために残りの限界を調べるために正常に動作します -
SELECT e.Limit_Amt - SUM(Amount) AS 'Remaining Limit'
FROM Employee e, Employee_Wage ew
WHERE e.Employee_Id = ew.Employee_Id
GROUP BY e.Employee_Id, e.Limit_Amt
は、それが与えます -
Remaining Limit
2250
1450
しかし、さらに残りの合計の合計を計算したいと思います(つまり、3700 )、私がSUM(e.Limit_Amt - SUM(Amount))
を適用すると...それは動作していません。
概念的に私はブロックされています。誰かがここで私を案内してくれますか?前もって感謝します。
SELECT SUM(remaining)
FROM (
SELECT e.Limit_Amt - SUM(Amount) AS remaining
FROM Employee e
JOIN Employee_Wage ew
ON e.Employee_Id = ew.Employee_Id
GROUP BY
e.Employee_Id
, e.Limit_Amt
) sub
from a join b on a.id = b.id
構文がSQL92のfrom a, b where a.id = b.id
よりも明確です:
最後の行に追加します。 @Andomarは25年前に追加されたANSI標準である[明示的な結合の暗黙的な結合](https://stackoverflow.com/questions/44917/explicit-vs-implicit-sql-joins)を置き換えています。同等の性能ですが、より明確でメンテナンス可能なコードです。 – Parfait
お返事ありがとうございました。 –