我有一個名爲'tweets'的數據庫。數據庫的'tweets'包括(其中包括)'tweet_id','創建於'(dd/mm/yyyy hh/mm/ss),'classified'和'processed text'。在「已處理的文本」行中,存在某些字符串,例如{TICKER | IBM}',我將其稱爲ticker-strings。SQL:每天的平均值
我的目標是獲得每天每個ticker-string「分類」的平均值。 「分類」行包含數值-1,0和1. 此時,我有一個正在運行的SQL查詢,用於每天一個ticker-string的'classified'的平均值。請參閱下面的腳本。
SELECT Date(`created_at`) , AVG(`classified`) AS Classified
FROM `tweets`
WHERE `processed_text` LIKE '%{TICKER|IBM}%'
GROUP BY Date(`created_at`)
然而,有兩個問題與此腳本:
- 它不包括在其中有零「processed_text的像天{TICKER | IBM}。然而,我希望它在這種情況下吐出零值。
- 我有100多個不同的ticker-strings,因此想要有一個腳本可以同時處理多個字符串。我也可以一個一個地手動完成它們,但這會花費我很多時間。
當我有每股票串計數「tweet_id的一個類似的問題,別人使用以下建議:
SELECT d.date, coalesce(IBM, 0) as IBM, coalesce(GOOG, 0) as GOOG,
coalesce(BAC, 0) AS BAC
FROM dates d LEFT JOIN
(SELECT DATE(created_at) AS date,
COUNT(DISTINCT CASE WHEN processed_text LIKE '%{TICKER|IBM}%' then tweet_id
END) as IBM,
COUNT(DISTINCT CASE WHEN processed_text LIKE '%{TICKER|GOOG}%' then tweet_id
END) as GOOG,
COUNT(DISTINCT CASE WHEN processed_text LIKE '%{TICKER|BAC}%' then tweet_id
END) as BAC
FROM tweets
GROUP BY date
) t
ON d.date = t.date;
這個腳本完美工作了計算每股票串的tweet_ids。正如我所說,我不想看到每個股票的字符串的平均分類分數。因此我的問題是:有人能告訴我如何調整這個腳本,以便我可以計算每天每個ticker-string的平均classified
分數?