很好。
我以前从未使用过 REGEXP_MATCHES,但我刚刚试用了它们(嗯,第二个。我没有安装 Retort
)。
我认为您应该按 emoji 而不是 smiley 进行 GROUP BY。另外 user_id > 1 会排除原始管理员。这可能是故意的,但我想提一下。 ![]()
我还问了 Bert
寻求解释,以防其他人觉得有用:
Bert 的说法:
此查询用于计算 posts 表中每个表情符号的使用次数。
以下是查询的细分:
SELECT count(*), REGEXP_MATCHES(raw, ' :([a-z_]+): ', 'g') emoji: 这是查询的主要部分。它正在计算行数 (count(*)) 并使用正则表达式 (REGEXP_MATCHES) 来匹配和提取raw列中的表情符号。正则表达式' :([a-z_]+): '正在查找以冒号 (:) 开头和结尾,并且中间有一个或多个小写字母或下划线的模式。 ‘g’ 标志表示它将全局匹配,即查找所有匹配项,而不是在找到第一个匹配项后停止。匹配的表情符号随后被别名为emoji。FROM posts: 这指定了从中检索数据的表,在本例中是posts表。WHERE user_id > 0: 这是一个过滤正在考虑的行的条件。仅包括user_id大于 0 的行。GROUP BY emoji: 这将结果按emoji别名进行分组。这意味着对于每个唯一的表情符号,它将计算行数。ORDER BY 1 DESC: 这将结果按结果集中的第一列(即计数)以降序排序。这意味着使用最频繁的表情符号将首先出现。
因此,总而言之,此查询计算 posts 表中每个表情符号的使用次数,针对 user_id 大于 0 的帖子,并按结果排序,以便最常用的表情符号首先出现。