计算 SQL 中包含特定值的列中的单元格数量

问题描述 投票:0回答:2

我想识别并统计包含以下值的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'
sql mysql count
2个回答
0
投票

如果您必须对大量 uri 执行相同的查询,我建议您创建一个过程。

要创建一个程序,我建议您按照此链接


0
投票

我会为您的腿型值创建一个列,然后按这些值进行分组:

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
     

您只需调整案例即可使用您的其他值创建腿型。

© www.soinside.com 2019 - 2024. All rights reserved.