Mysql 在when-case中使用sum函数
如何在每种情况下不计算一个值,如何计算一次并在每种情况下使用 将计数移动到子查询,并将大小写移动到外部,如下图所示:Mysql 在when-case中使用sum函数,mysql,Mysql,如何在每种情况下不计算一个值,如何计算一次并在每种情况下使用 将计数移动到子查询,并将大小写移动到外部,如下图所示: SELECT '2017-05-30' AS `short_date`, 'Stats' AS `group`, 'Active ' AS `subgroup`, '' AS `row`, CASE WHEN COUNT(DISTINCT(guild_name)) >= 1 AND COUNT(DIST
SELECT '2017-05-30' AS `short_date`,
'Stats' AS `group`,
'Active ' AS `subgroup`,
'' AS `row`,
CASE
WHEN COUNT(DISTINCT(guild_name)) >= 1 AND COUNT(DISTINCT(guild_name)) <= 5 THEN '1 - 5 '
WHEN COUNT(DISTINCT(guild_name)) >= 6 AND COUNT(DISTINCT(guild_name)) <= 10 THEN '6 - 10 '
WHEN COUNT(DISTINCT(guild_name)) >= 11 AND COUNT(DISTINCT(guild_name)) <= 15 THEN '11 - 15 '
WHEN COUNT(DISTINCT(guild_name)) >= 16 AND COUNT(DISTINCT(guild_name)) <= 20 THEN '16 - 20 '
WHEN COUNT(DISTINCT(guild_name)) >= 21 AND COUNT(DISTINCT(guild_name)) <= 25 THEN '21 - 25 '
WHEN COUNT(DISTINCT(guild_name)) >= 30 THEN '> 30' END AS `value`
FROM table
WHERE guild_name !=0
GROUP BY
`short_date`,
`group`,
`subgroup`
这样,在子查询中只执行一次计数,而外部查询对结果集进行处理 将计数移动到子查询,并将大小写移动到外部,如下图所示:
SELECT '2017-05-30' AS `short_date`,
'Stats' AS `group`,
'Active ' AS `subgroup`,
'' AS `row`,
CASE
WHEN COUNT(DISTINCT(guild_name)) >= 1 AND COUNT(DISTINCT(guild_name)) <= 5 THEN '1 - 5 '
WHEN COUNT(DISTINCT(guild_name)) >= 6 AND COUNT(DISTINCT(guild_name)) <= 10 THEN '6 - 10 '
WHEN COUNT(DISTINCT(guild_name)) >= 11 AND COUNT(DISTINCT(guild_name)) <= 15 THEN '11 - 15 '
WHEN COUNT(DISTINCT(guild_name)) >= 16 AND COUNT(DISTINCT(guild_name)) <= 20 THEN '16 - 20 '
WHEN COUNT(DISTINCT(guild_name)) >= 21 AND COUNT(DISTINCT(guild_name)) <= 25 THEN '21 - 25 '
WHEN COUNT(DISTINCT(guild_name)) >= 30 THEN '> 30' END AS `value`
FROM table
WHERE guild_name !=0
GROUP BY
`short_date`,
`group`,
`subgroup`
这样,在子查询中只执行一次计数,而外部查询对结果集进行处理 您的问题看起来像是在为三个分组字段输入字符串?此查询将返回一行,其中包含不同的帮会名称。您是否打算稍后扩展此功能以针对多个短日期、组和子组运行?@ScottieB是的,我知道您的问题看起来像是在为三个分组字段输入字符串?此查询将返回一行,其中包含不同的帮会名称。您是否打算稍后扩展此功能,以针对多个短日期、组和子组运行?@ScottieB是的,我有