admin

TSQL,有关用户年龄的小查询帮助

sql

我有一个带有注册用户的表,其中将年保存为varchar值仅仅是因为我只用了一年。我想创建带有年龄段的饼图,以显示哪些用户更有可能注册。

下面的查询为我提供了用户年龄计数,这些用户年龄在表中显示超过5次以避免产生小的结果。虽然这些小的结果,但在“具有ount(userID)>
5”下面,我希望与其他人一样显示。我应该在此查询中添加什么,或者可能重新设计它。我可以创建一些愚蠢的解决方案,例如将出现在初始查询中的所有年份都用完,然后选择除那些年份之外的所有年份,但是必须有更好,更具创造性的方式编写此查询。

因此结果将类似于1 10 1990 2 4 1980 3 10其他

select count(userID) ageCount,userBirthYear from Users
group by userBirthYear
having count(userID)>5
order by count(userID) desc

谢谢


阅读 159

收藏
2021-07-01

共1个答案

admin

这是一种方法(假设使用SQL2005或更高版本)。

With Ages As
(
select count(userID) ageCount,userBirthYear 
from Users
group by userBirthYear
)

SELECT ageCount,userBirthYear FROM Ages WHERE ageCount>5
UNION ALL
SELECT sum(ageCount) ,'others' As userBirthYear FROM Ages WHERE ageCount<=5
2021-07-01