2012-04-11 14 views
0

考虑下表(“推特”):排序数据库结果集第一用户,然后按日期

+---------+------------+----------+ 
| user_id | _date  | tweet_id | 
+---------+------------+----------+ 
| 1  | 2011-03-17 | 12  | 
| 1  | 2011-03-17 | 16  | 
| 1  | 2011-01-18 | 17  | 
| 2  | 2011-03-18 | 23  | 
| 2  | 2011-01-17 | 29  | 
| 2  | 2011-03-17 | 32  | 
| 2  | 2011-01-17 | 33  | 
| 2  | 2011-03-18 | 34  | 
| 2  | 2011-01-19 | 45  | 
| 2  | 2011-03-19 | 48  | 
| 3  | 2011-01-19 | 50  | 
| 3  | 2011-03-19 | 51  | 
| 3  | 2011-01-19 | 52  | 
| 3  | 2011-01-20 | 53  | 
+---------+------------+----------+ 

我想下面的输出:微博每个用户订购的日期:

user_id _date  cnt 
------------------------ 
1  2011-03-17 2 
1  2011-03-18 1 
2  2011-03-17 3 
2  2011-03-18 2 
2  2011-03-19 2 
3  2011-03-19 3 
3  2011-03-20 1 

我不明白为什么,但这不起作用:

SELECT user_id, _date, COUNT(tweet_id) AS cnt FROM tweets 
GROUP BY nyse_date ORDER BY sp100_id ASC 

有人可以向我解释为什么?

+2

哪里了'nyse_date'和'sp100_id'列从何而来? – Bojangles 2012-04-11 16:38:47

+0

另外我猜你每次写'2011-01- *'你的意思是'2011-03- *',对吧? – 2012-04-11 16:42:59

回答

1

你几乎明白了。不知道为什么你在那里有nyse_datesp100_id?您需要将user_id_date组合在一起,然后按顺序排列。这应该为你做它:

SELECT user_id, _date, COUNT(tweet_id) AS cnt FROM tweets 
GROUP BY user_id, _date ORDER BY user_id, _date ASC 
1

尝试:

SELECT user_id, _date, count(*) AS cnt 
FROM tweets 
GROUP BY user_id, _date 
ORDER BY _date ASC 
相关问题