看一下这个查询的开头:
SELECT
sum(decode(REGEXP_COUNT(tpdd.domain, 'thedomain.com'), 1, tpdd.size, 0, 0)) SizeClient,
sum(decode(REGEXP_COUNT(tpdd.domain, 'thedomain.com'), 1, 0, 0, tpdd.size)) SizeThirdParty,
...
有没有办法重复使用" REGEXP_COUNT(tpdd.domain,' thedomain.com')"功能?我希望oracle服务器足够聪明,但我不能保证它,而且,如果没有重复的代码,代码看起来会更好。
答案 0 :(得分:4)
你可以使用这样的CTE:
WITH domain_regex as
(
SELECT tpdd.domain, REGEXP_COUNT(tpdd.domain,'thedomain.com') as regex_res
FROM ...
)
SELECT
sum(decode(d.regex_res, 1, tpdd.size, 0, 0)) SizeClient,
sum(decode(d.regex_res, 1, 0, 0, tpdd.size)) SizeThirdParty,
...
JOIN domain_regex d on tpdd.domain = d.domain