2017-04-17 7 views
0

그래서 저는 작업이 있으며 Date와 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

에 문 BY

변경 GROUP 당신은 시간을 그룹화하는 것 그룹시, 분을 포함하고 같은 날에서 다른 수를 얻는 이유 초이 너무 낮 결과를. 대신 하루 단위로 그룹화하십시오. – 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 provider_name, date_format(time, '%Y-%m-%d') 
+0

대단히 감사합니다! :) –