2016-06-22 12 views
1

私は場所があります。場所には請求書があります。請求書には手数料があります。私は与えられた場所の月の料金をすべて手に入れたいです。グループを2回グループ化またはグループ化する方法は?

は、ここで私は何ができるかです:

SELECT 
    STR_TO_DATE(CONCAT_WS('-', YEAR(invoices.invoiceDate) , MONTH(invoices.invoiceDate), '01'), '%Y-%m-%d') as invoiceMonth, 
    AVG(fees.amount) as averageMonthlyInvoice, 
    SUM(fees.amount) as totalMonthlyInvoice 
    from invoices as invoices 
    inner join fees as fees 
     on fees.invoiceId = invoices.id 
    where invoices.locationId = 1 
    group by invoiceMonth 

この第二の1は私の場所の平均と合計請求書情報を与えるだろう。私は一度にすべての場所でこれを行うことができるようにしたい。

SELECT 
    invoices.locationId as locationId, 
    STR_TO_DATE(CONCAT_WS('-', YEAR(invoices.invoiceDate) , MONTH(invoices.invoiceDate), '01'), '%Y-%m-%d') as invoiceMonth, 
    AVG(fees.amount) as averageMonthlyInvoice, 
    SUM(fees.amount) as totalMonthlyInvoice 
    from invoices as invoices 
    inner join fees as fees 
     on fees.invoiceId = invoices.id 
    group by invoiceMonth, locationId 

しかし、この最後の1だけの平均と合計すべての請求書、私はそれぞれの特定の場所についての情報を与えていないだろう: は、ここで私が何をしたいのです。

+2

おそらく同じデータと予想される結果を提供できますか?あなたの最後のクエリーは正しいですが、あなたがlocationidでグループ化しているので... – sgeddes

+1

あなたは 'GROUP BY'節に現れず集約ではない列を選択しています。 –

+1

@TimBiegeleisen - 列エイリアスでグループ化することができるので、除外された列はありますか?あなたのコメントを完全に理解していません。両方のクエリは私には右のように見える... – sgeddes

答えて

0

おそらくORDER BY (conditions)を使用すると、データ復旧に役立つかもしれませんか?

関連する問題