我想列出 2016 年按月发布的推文数量。我是 SQL 新手,但尝试过不同的方法来执行此操作。以下是我的最新尝试。我不断收到一条消息,指出我没有正确使用datelogged
。最后,我不确定如何格式化 Total
和 Tweet_Cnt
。
Twitter 中日期的格式如下:MESSAGE_POSTED_TIME: 2015-08-06 21:48:34。仅供引用----列名=MESSAGE_POSTED_TIME;表名称=DTrumpCampaign_Tweets
Select
Year(DATELOGGED),
Sum(Case When Month(DATELOGGED) = 1 Then 1 Else 0 End) Jan,
Sum(Case When Month(DATELOGGED) = 2 Then 1 Else 0 End) Feb,
Sum(Case When Month(DATELOGGED) = 3 Then 1 Else 0 End) Mar
From
DTrumpCampaign_Tweets
Group By
Year(DATELOGGED);
我希望我的表格格式如下
Month(2016) Tweet_Cnt Jan 25 Feb 100 Mar 200 total 325
非常感谢您的帮助。 谢谢。
最佳答案
假设您只需要 2016 年的数据。
<小时/>SELECT
(CASE WHEN t.`month` IS NULL THEN 'total'ELSE t.monthName END) AS 'Month(2016)',
t.Tweet_Cnt
FROM
(
SELECT
MONTHNAME(DATELOGGED) AS monthName,
YEAR (DATELOGGED) `year`,
MONTH (DATELOGGED) `month`,
COUNT(*) Tweet_Cnt
FROM DTrumpCampaign_Tweets
WHERE YEAR (DATELOGGED) = '2016'
GROUP BY `year`,`month` WITH ROLLUP
LIMIT 13
) t;
<小时/>
<小时/>
您将得到如下所示的输出结构:
| Month(2016) | Tweet_Cnt |
|-------------|-----------|
| January | 1 |
| February | 2 |
| March | 1 |
| April | 1 |
| May | 1 |
| June | 1 |
| July | 1 |
| August | 1 |
| September | 1 |
| October | 1 |
| November | 1 |
| December | 1 |
| total | 13 |
<小时/>
更多:
如果您希望月份名称仅包含前三个字母,则只需更改上述查询中的相应行,如下所示:
更改此行: SELECT MONTHNAME(DATELOGGED) AS MonthName,
为此: SELECT DATE_FORMAT(DATELOGGED,"%b") AS MonthName,
关于mysql - sql查询按月统计2016年的twitter评论,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36169927/