0

我有这个查询..

SELECT DATE_FORMAT(utcdt,GET_FORMAT(DATE,'ISO')) as utcdt, 
                HOUR(utcdt) as hour, 
                country,
                sum(impressions) as impressions 
                FROM rtb_impressions where campaign_id='cid2204184260'
                GROUP BY utcdt, hour, country

这些是结果......

{'impressions': Decimal('1'), 'country': 'US', 'hour': 10L, 'utcdt': '2012-10-01'}
{'impressions': Decimal('40000'), 'country': 'US', 'hour': 9L, 'utcdt': '2012-10-02'}
{'impressions': Decimal('20000'), 'country': 'US', 'hour': 9L, 'utcdt': '2012-10-02'}

为什么我应该得到 2 行却得到了 3 行?012-10-02 应该已经相加。

谢谢

4

2 回答 2

2

你得到那个是因为你按错误的值分组。试试这个:

SELECT DATE_FORMAT(utcdt,GET_FORMAT(DATE,'ISO')) as utcdt, 
            HOUR(utcdt) as hour, 
            country,
            sum(impressions) as impressions 
            FROM rtb_impressions where campaign_id='cid2204184260'
            GROUP BY DATE_FORMAT(utcdt,GET_FORMAT(DATE,'ISO')), hour, country
于 2012-10-05T11:40:17.960 回答
1

试试这个:

SELECT DATE_FORMAT(utcdt,GET_FORMAT(DATE,'ISO')) as utcdt, 
       HOUR(utcdt) as hour, 
       country,
       sum(impressions) as impressions 
FROM rtb_impressions
WHERE campaign_id='cid2204184260'
GROUP BY DATE_FORMAT(utcdt,GET_FORMAT(DATE,'ISO')), hour, country

如果您想根据格式化值对结果进行分组,您需要确保在GROUP BY子句中应用相同的格式。

于 2012-10-05T11:40:05.217 回答