2017-04-17 51 views
0

因此,我有一项任务,我需要按日期和Provider_name对结果进行分组,但目前我的代码列出了多个日期和提供程序。 (每天需要有一个供应商(总共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

你是分组的时间这将结果进行分组的一天,包括小时,分钟和秒所以这就是为什么你当天获得不同的计数。请尝试按天分组。 – dsharew

回答

1

尝试这样的:

.... 

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

您是分组的时间这将组的结果来时间,包括小时,分钟和秒等等...这就是为什么你正从同一天不同的计数。请尝试按天分组。

+1

woow。你打我:) – Samir

+0

;)你明白了原因? – dsharew

+0

非常感谢,它的工作! :D –

0

time列是datetime。所以它按日期和时间分组,而不仅仅是日期。

更改GROUP BY语句

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

非常感谢! :) –