我有一个名为'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
分数?