如何在单个查询中使用 count,'like' 和 group by?
How to use count,'like' and group by in single query?
我需要类似
的东西
SELECT sum(case when name LIKE 'nick-1%' then 1 end) as Count,
name
FROM dummytable
GROUP BY CASE
WHEN name LIKE 'nick-1%' THEN 'nick'
WHEN name LIKE 'vicky-1%' THEN 'vicky'
ELSE NULL
END
Name Count
nick 10
vicky 17
nick 表示它应该包含像 'nick%' 这样的名字
vicky 意味着它应该包含像 'vicky%'
这样的名字
在我的查询中,我无法查看名称列,因为使用 sum 它要求我将其添加到分组依据,但我无法将其添加到分组依据,因为我正在为它使用类似的函数
要解决您遇到的问题,您只需要在 SELECT
中重复您当前在 GROUP BY
中使用的相同 CASE
表达式:
SELECT CASE WHEN name LIKE 'nick-1%' THEN 'nick'
WHEN name LIKE 'vicky-1%' THEN 'vicky'
ELSE NULL END AS Name,
COUNT(*) AS Count
FROM dummytable
GROUP BY CASE WHEN name LIKE 'nick-1%' THEN 'nick'
WHEN name LIKE 'vicky-1%' THEN 'vicky'
ELSE NULL END
在您的原始查询中,您混合了两种类型的聚合。如果您想对整个 table 使用条件聚合,您最初 SELECT
正在尝试这样做,您可以使用以下查询:
SELECT 'nick' AS Name, SUM(CASE WHEN name LIKE 'nick-1%' THEN 1 ELSE 0 END) AS Count
FROM dummytable
UNION ALL
SELECT 'vicky', SUM(CASE WHEN name LIKE 'vicky-1%' THEN 1 ELSE 0 END)
FROM dummytable
我需要类似
的东西SELECT sum(case when name LIKE 'nick-1%' then 1 end) as Count,
name
FROM dummytable
GROUP BY CASE
WHEN name LIKE 'nick-1%' THEN 'nick'
WHEN name LIKE 'vicky-1%' THEN 'vicky'
ELSE NULL
END
Name Count
nick 10
vicky 17
nick 表示它应该包含像 'nick%' 这样的名字 vicky 意味着它应该包含像 'vicky%'
这样的名字在我的查询中,我无法查看名称列,因为使用 sum 它要求我将其添加到分组依据,但我无法将其添加到分组依据,因为我正在为它使用类似的函数
要解决您遇到的问题,您只需要在 SELECT
中重复您当前在 GROUP BY
中使用的相同 CASE
表达式:
SELECT CASE WHEN name LIKE 'nick-1%' THEN 'nick'
WHEN name LIKE 'vicky-1%' THEN 'vicky'
ELSE NULL END AS Name,
COUNT(*) AS Count
FROM dummytable
GROUP BY CASE WHEN name LIKE 'nick-1%' THEN 'nick'
WHEN name LIKE 'vicky-1%' THEN 'vicky'
ELSE NULL END
在您的原始查询中,您混合了两种类型的聚合。如果您想对整个 table 使用条件聚合,您最初 SELECT
正在尝试这样做,您可以使用以下查询:
SELECT 'nick' AS Name, SUM(CASE WHEN name LIKE 'nick-1%' THEN 1 ELSE 0 END) AS Count
FROM dummytable
UNION ALL
SELECT 'vicky', SUM(CASE WHEN name LIKE 'vicky-1%' THEN 1 ELSE 0 END)
FROM dummytable