作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如果执行以下命令,我们可以看到有 6 个结果。
> select competition.region, count(competition.score) as cnt from competition group by competition.region order by cnt desc;
## --Result--
CN 80
USA 60
SE 40
US 10
JP 10
KR 8
但我想要的是将第 4 行到末尾的字段合并到一个名为“其他”的字段中:
## --Result--
CN 80
USA 60
SE 40
OTHER 28
有什么方法可以在单个 SQL 中实现吗?谢谢!
最佳答案
使用派生表将其他表合并在一起:
select region, count(*) as cnt
(select case when competition.region in ('CN', 'USA', 'SE') then competition.region
else 'OTHER'
end as region
from competition) as dt
group by region
order by cnt desc
编辑:
分别返回 3 个最常见的区域。其余为 OTHER。
select region, count(*) as cnt
(
select case when region in (select region from competition
group by region
order by count(*) desc
limit 3) then region
else 'OTHER'
end as region
) as dt
group by region
order by cnt desc
请注意,如果是并列第 3 名,则只会返回一个地区。
关于mysql - 如何在 SQL 中合并排序结果中的拖尾字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33869746/
我是一名优秀的程序员,十分优秀!