我想识别并统计包含以下值的uri
ukpga
ukla
asp
asc
anaw
mwa
ukcm
nia
aosp
aep
aip
apgb
nisi
mnia
apni
表中有一列包含 uri 列表。
下面的查询是我到目前为止所做的 - 这可行,但它将成为一个非常长的查询,所以我想找到一种方法来缩短它。
SELECT 'uksi' AS legtype,
COUNT (uri)
FROM "default"."www-live-lon-cf"
WHERE date >= date('2023-02-01')
AND date <= date('2023-08-31')
AND uri LIKE '%.uksi'
UNION
SELECT 'ukpga' AS legtype,
COUNT (uri)
FROM "default"."www-live-lon-cf"
WHERE date >= date('2023-02-01')
AND date <= date('2023-08-31')
AND uri LIKE '%.ukpga'
如果您必须对大量 uri 执行相同的查询,我建议您创建一个过程。
要创建一个程序,我建议您按照此链接
我会为您的腿型值创建一个列,然后按这些值进行分组:
WITH regrouped_uri AS(
SELECT CASE
WHEN uri LIKE '%.ukpga' THEN 'ukpga'
WHEN uri LIKE '%.uksi' THEN 'uksi'
ELSE null
END AS legtype,
uri
FROM "default"."www-live-lon-cf"
WHERE date >= date('2023-02-01')
AND date <= date('2023-08-31')
)
SELECT legtype,
COUNT(uri) AS count_uri
FROM regrouped_uri
GROUP BY legtype
您只需调整案例即可使用您的其他值创建腿型。