2016-08-04 9 views
0

今日はSQLで解決できないような問題が発生しました。どのような助けや指針をいただければ幸いです。最初に合計してから値を掛ける

I持って、次の2つのテーブル enter image description here

今、私がされて取得したいものを(labourentries.minutes_worked * price_per_hour/60)価格として、その後、グループにSUM(価格)を行うすべてのlabourtypeによるとそう私はlabourtypeごとにエントリの総合計を得るだろう。私はMySQLを使用しています

は、彼女はここにいくつかのサンプルデータを、私はこれまでのところ、いくつかのSQLを得たが、完全に私の問題を解決することができませんでしたenter image description here

です。

SELECT SUM(labourentries.minutes_worked) AS minutes_worked, 
     AVG(labourentries.price_per_hour) AS average_price, 
     count(labourtypes.id) AS amount, 
     labourtypes.labourtype 
FROM labourtypes 
INNER JOIN labourentries ON labourtypes.id = labourentries.labourtype_id 
GROUP BY labourtypes.id 

は、ここで私はprice_per_hourの平均とそのグループにそれを実行しようとしましたが、違いは、信頼できるには大きすぎます。

おかげさまで、ありがとうございました。 乾杯!私はこのコード行を追加することで、問題を解決することができたドミトリーEgorovさんのコメントで、クエリを編集した後

SELECT SUM(PRICE) AS PRICE_PER_LABOURTYPE, A.LABOUR_TYPE FROM 
(SELECT (B.MINUTES_WORKED * B.PRICE_PER_HOUR/60) AS PRICE, A.LABOUR_TYPE FROM LABOURTYPES A 
INNER JOIN LABORENTERIES B ON A.ID = B.LABOURTYPE_ID) 
GROUP BY A.ID 
+1

説明が必要... labourtypesの2行または3行を記述してください。 2行または3行のlabourentriesを記述してください表 ---次に 最終的にどのような結果が見たいか2行または3行書き込んでください –

+0

また、使用するdbms製品にもタグを付けます。 – jarlh

+1

'labourentries'_and_ totalsの_every_行に' labourtypes.id'または単に合計だけの 'price'が必要ですか?後者が当てはまる場合(コードで示唆している)、 'sum(minutes_worked * price_per_hour/60)as Price'を単に使うことができます。簡略化されたデモを参照してください:http://sqlfiddle.com/#!9/ce93a/2 –

答えて

0

はこれを試してみてください

sum(minutes_worked * price_per_hour/60) as Price, 

だから私のSQLクエリは

に変更しました
SELECT SUM(labourentries.minutes_worked) AS minutes_worked, 
sum(minutes_worked * price_per_hour/60) as Price, 
count(labourtypes.id) AS amount, 
labourtypes.labourtype 
FROM labourtypes 
INNER JOIN labourentries ON labourtypes.id = labourentries.labourtype_id 
GROUP BY labourtypes.id 
0

関連する問題