我在通过 SQL 查询计算零值时遇到了问题。尽管在网站上提出了类似的问题,但我似乎无法让它与我的查询一起使用。
我有一个包含某些字符串的数据库,例如“{TICKER|IBM}”,我将其称为代码字符串。目标是计算每天的 ticker-strings 数量。
我的数据库表“tweets”包括行“tweet_id”、“创建于”(dd/mm/yyyy hh/mm/ss) 和“已处理的文本”。代码字符串,例如“{TICKER|IBM}”,位于“已处理文本”行内。
因此,为了计数,我进行了以下 SQL 查询。
SELECT COUNT( DISTINCT `tweet_id` ) , DATE( `created_at` )
FROM `tweets`
WHERE `processed_text` LIKE '%{TICKER|IBM}%'
GROUP BY DATE( `tweets`.`created_at` )
此查询返回每个日期不同推文 ID 的数量,但忽略计数为零的日期。我知道这可以归咎于我的 SQL 查询中没有使用“LEFT JOIN”,但我仍然无法为这个问题创建一个有效的 SQL 查询(由于我的 SQL 知识有限)。
感谢评论者的更新:我将创建一个包含日期的表格(其中没有 hh/mm/ss)。如果它被称为“日期”,有人可以向我解释我应该如何链接到这个表吗?
最佳答案
您需要将日期表与返回计数的子查询左连接:
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
此外,如果 tweet_id
是唯一列,则不需要 COUNT(DISTINCT tweet_id)
,只需使用 COUNT(*)
.
关于mysql - SQL COUNT 零问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24475495/