我有一个带有注册用户的表,其中将年保存为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
谢谢
这是一种方法(假设使用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