gpt4 book ai didi

mysql - 用于通过一个输出对多个字符串进行计数的 SQL 查询

转载 作者:行者123 更新时间:2023-11-29 12:52:40 25 4
gpt4 key购买 nike

我有一个包含某些字符串的数据库,例如“{TICKER|IBM}”,我将其称为股票行情字符串。我的目标是计算多个字符串每天的股票行情数量。

我的数据库表“tweets”包含行“tweet_id”、“创建于”(dd/mm/yyyy hh/mm/ss) 和“已处理文本”。股票代码字符串(例如“{TICKER|IBM}”)位于“已处理文本”行内。

此时,我有一个有效的 SQL 查询来计算一个股票行情(感谢其他 Stackoverflow 用户的帮助)。我想要的是一个 SQL 查询,其中我可以计算多个字符串(例如,在“{TICKER|IBM}”旁边还有“{TICKER|GOOG}”和“{TICKER|BAC}”)。

计算一个股票行情的有效 SQL 查询如下:

SELECT d.date, IFNULL(t.count, 0) AS tweet_count
FROM all_dates AS d
LEFT JOIN (
SELECT COUNT(DISTINCT tweet_id) AS count, DATE(created_at) AS date
FROM tweets
WHERE processed_text LIKE '%{TICKER|IBM}%'
GROUP BY date) AS t
ON d.date = t.date

最终输出应该给出一列包含日期、一列包含 {TICKER|IBM}、一列包含 {TICKER|GOOG} 和一列包含 {TICKER|BAC}。

我想知道这是否可能以及您是否有解决方案?我有 100 多个不同的股票行情。当然,逐一进行也是一种选择,但这非常耗时。

最佳答案

如果我理解正确,您可以使用条件聚合来做到这一点:

SELECT d.date, coalesce(IBM, 0) as IBM, coalesce(GOOG, 0) as GOOG, coalesce(BAC, 0) AS BAC
FROM all_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;

关于mysql - 用于通过一个输出对多个字符串进行计数的 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24498047/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com