2017-04-17 4 views
0

私はタスクがあり、結果をDateとProvider_nameでグループ化する必要がありますが、現在のところ私のコードは複数の日付とプロバイダをリストしています。 (1日に1つのプロバイダー(25日)が必要なので、私のテーブルには、プロバイダがその日にどれだけ多くのメッセージを出したか、どのくらいの収益を得たかが表示されます)ヘルプでグループ化する(複数でグループ化する、重複する)

これは私の結果である必要があります。 Result table

But this is what i'm currently getting

これは、現在

SELECT date_format(time, '%Y-%m-%d') AS Date, provider_name, COUNT(message_id) AS Messages_count, SUM(price) AS Total_price 
FROM mobile_log_messages_sms 
INNER JOIN service_instances ON service_instances.service_instance_id = mobile_log_messages_sms.service_instance_id 
INNER JOIN mobile_providers ON mobile_providers.network_code = mobile_log_messages_sms.network_code 
WHERE time 
BETWEEN '2017-02-26 00:00:00' 
AND time 
AND '2017-03-22 00:00:00' 
AND price IS NOT NULL 
AND price <> '' 
AND service IS NOT NULL 
AND service <> '' 
AND enabled IS NOT NULL 
AND enabled >=1 
GROUP BY provider_name, time 
ORDER BY time DESC 

私はめちゃめちゃてきた場所を教えてもらえます私のコードで、私は本当に答えを把握することはできません。

+0

変更GROUP BY文のあなたが同じ日に異なる数を取得理由があるので、日によってグループ結果は時、分、秒を含むだろう時間をグループ化しています。代わりに1日ごとにグループ化してみてください。 – dsharew

答えて

1

は次のように試してみてください:

.... 

    GROUP BY provider_name, date_format(time, '%Y-%m-%d') 
    ORDER BY time DESC 

あなたは同じ日の異なる数を取得なぜこれほどの時、分、秒など、時間によってグループの結果を...それはあるだろう時間をグループ化しています。代わりに1日ごとにグループ化してみてください。

+1

woow。あなたは私を打ち負かす:) – Samir

+0

;)理由を理解していますか? – dsharew

+0

ありがとう、それは働いた! :D –

0

timeカラムは、datetimeです。だから、日にちではなく日付と時刻の両方でグループ分けされています。

GROUP BY provider_name, date_format(time, '%Y-%m-%d') 
+0

ありがとうございました! :) –

関連する問題