如何在学说查询中使用CASE和SUBSTRING_INDEX?



我有一个sql查询,它在mysql服务器中成功运行并得到了输出。

但我无法以教义格式转换此查询。 查询如下

SELECT (CASE WHEN seqnum < 10 THEN domain ELSE 'Others' END) as domain,
SUM(c)
FROM (SELECT SUBSTRING_INDEX(SUBSTR(email, INSTR(email, '@') + 1), '.', 1) as domain,
COUNT(*) as C,
ROW_NUMBER() OVER (ORDER BY COUNT(*) DESC) as seqnum
FROM newsletter_recipient
WHERE LENGTH(email) > 0
GROUP BY domain
) d
GROUP BY (CASE WHEN seqnum < 10 THEN domain ELSE 'Others' END)
ORDER BY SUM(c) DESC;

当我在教义中使用它时,它会给出错误,例如

预期的已知功能,得到"SUBSTRING_INDEX">

希望有人能帮助我将此查询转换为教义格式。

您要么需要实现特定于供应商的函数,以便 DQL 可以将其转换为正确的 SQL 调用,要么在这种简单的情况下,内置函数调用的组合可能就足够了:

SUBSTRING(email, LOCATE('@', email) + 1, ...

有关可用跨平台函数的完整列表,请参阅文档。

此外,我忍不住提到没有TLD的域名可能包含点,例如,您可能会在info@mail.example.org中查找mail.example。不过,根据您的规格。

相关内容

  • 没有找到相关文章

最新更新