我有一个包含注册用户的表,其中我将年份保存为 varchar 值,只是因为我只花了一年。我想创建包含年龄的饼图,以显示哪些用户更有可能注册。
下面的查询给出了表中出现超过 5 次的用户年龄计数,以避免结果过小。虽然这些小结果低于“having ount(userID)>5”,但我想显示为其他人。我应该添加什么到这个查询或者可能重新设计它。我可以创建愚蠢的解决方案,例如获取初始查询中出现的所有年份,然后选择除这些年份之外的所有年份,但必须有更好、更有创意的方式来编写此查询。
所以结果会是这样的
1990年1月10日
2 4 1980
3 10 其他
select count(userID) ageCount,userBirthYear from Users
group by userBirthYear
having count(userID)>5
order by count(userID) desc
thanks
这是一个重组解决方案(无联合)以避免重复 IO。
基本思想是您希望每条记录都对结果做出贡献,因此不应有 WHERE 或 HAVING 子句。
SELECT
SUM(sub.ageCount) as ageCount,
sub.userBirthYear
FROM
(
SELECT Count(userId) ageCount,
CASE WHEN COUNT(userID) > 5)
THEN userBirthYear
ELSE 'Other'
END as userBirthYear
FROM Users
GROUP BY userBirthYear
) as sub
GROUP BY sub.userBirthYear
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)