尝试解决一些来自sql zoo的查询以练习sql技巧。
我有一个具有列(year, subject, winner)的表nobel,其中包含关于在给定的一年中为给定的主题获得高尚奖项的人的信息。
所以我假设主键是(year, subject, winner)的组合。
我试图解决的问题是:显示赢得多个主题的获胜者。
SQL查询的输出应该只有一列包含获胜者的姓名。
我觉得我应该使用group by和having(count(winner)) >1。但我认为我需要按主题分组,这就是我的问题所在。
我不是在寻找查询。如果你能为我提供更多的逻辑而不是查询,这将会有所帮助。也不用担心它需要在哪个数据库上实现。我只是在练习这些问题。
发布于 2011-11-14 09:05:14
这应该会给你在任意年限内在多个不同的科目上获胜的人:
SELECT winner
FROM nobel
GROUP BY winner
HAVING COUNT(DISTINCT subject) > 1对于特定的年份,只需添加WHERE year = <whatever> (或所有年份的GROUP BY year ),尽管历史上没有人在一年中因两个主题获得诺贝尔奖-但谁知道未来会发生什么;)
发布于 2011-11-14 08:22:04
发布于 2012-03-24 13:13:04
SELECT winner
FROM nobel
GROUP BY winner
HAVING COUNT(winner) > 1这是最简单的方法......
https://stackoverflow.com/questions/8115916
复制相似问题