簡體   English   中英

SQL查詢以按月統計2016年的Twitter評論

[英]sql query to count twitter comments by month in 2016

我想列出2016年按月發布的Tweets數量。我是SQL的新手,但是嘗試了不同的方法來做到這一點。 以下是我的最新嘗試。 我不斷收到一條消息,指出我沒有正確使用datelogged 最后,我不確定如何格式化TotalTweet_Cnt

Twitter中日期的格式如下: MESSAGE_POSTED_TIME: 2015-08-06 21:48:34. FYI---- Column Name=MESSAGE_POSTED_TIME; Table Name=DTrumpCampaign_Tweets MESSAGE_POSTED_TIME: 2015-08-06 21:48:34. FYI---- Column Name=MESSAGE_POSTED_TIME; Table Name=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

非常感謝您的幫助。 謝謝。

這是一個帶有sqlfiddle演示的解決方案: http ://sqlfiddle.com/#!9/786acb/5

SELECT
    COALESCE(`Month(2016)`, 'Total') AS `Month(2016)`, Tweet_cnt
FROM 
(
    Select
        DATE_FORMAT(datelogged, '%b') AS `Month(2016)`,
        COUNT(*) AS Tweet_cnt
    From dtrumpcampaign_tweets
    WHERE YEAR(datelogged) = '2016'
    Group BY `Month(2016)` WITH ROLLUP
) t;

輸出如下:

+-------------+-----------+
| Month(2016) | Tweet_cnt |
+-------------+-----------+
| Feb         |         1 |
| Jan         |         2 |
| Mar         |         3 |
| Total       |         6 |
+-------------+-----------+
4 rows in set (0.00 sec)

假設您只需要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,


此修改查詢的演示


暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM