SQL Distinct 在查询中不起作用 - 为什么?
SQL Distinct not working in query - Why?
我正在尝试展示 10 个已经玩过的独特游戏,并在推文中对它们进行排序。但是,当我使用 Distinct 时,它仍然显示 game_id.
中的重复项
正如您在这张图片下看到的,您会看到很多 game_ids
我在尝试什么:
select distinct game_id, spike, _c0 as tweets_per_minute
from virtual4
order by tweets_per_minute desc
limit 10
结果:
注意:这个table是一个视图。
如果您想要每场比赛的推文数量最多,那么 select distinct
不是正确的方法。试试 row_number()
:
select game_id, spike, _c0 as tweets_per_minute
from (select v.*,
row_number() over (partition by game_id order by _c0 desc) as seqnum
from virtual4 v
) v
where seqnum = 1
order by tweets_per_minute desc
limit 10;
select distinct
适用于整行,而不仅仅是第一列。
您的查询将 return 不同的行,这些行是 game_id、spike 和 tweets_per_minute 的组合,然后按 tweets_per_minute 排序。
你可以试试这个,
select game_id, spike, _c0 as tweets_per_minute
from virtual4
where game_id in (select distinct game_id from virtual4 order by game_id)
limit 10
我正在尝试展示 10 个已经玩过的独特游戏,并在推文中对它们进行排序。但是,当我使用 Distinct 时,它仍然显示 game_id.
中的重复项正如您在这张图片下看到的,您会看到很多 game_ids
我在尝试什么:
select distinct game_id, spike, _c0 as tweets_per_minute
from virtual4
order by tweets_per_minute desc
limit 10
结果:
如果您想要每场比赛的推文数量最多,那么 select distinct
不是正确的方法。试试 row_number()
:
select game_id, spike, _c0 as tweets_per_minute
from (select v.*,
row_number() over (partition by game_id order by _c0 desc) as seqnum
from virtual4 v
) v
where seqnum = 1
order by tweets_per_minute desc
limit 10;
select distinct
适用于整行,而不仅仅是第一列。
您的查询将 return 不同的行,这些行是 game_id、spike 和 tweets_per_minute 的组合,然后按 tweets_per_minute 排序。
你可以试试这个,
select game_id, spike, _c0 as tweets_per_minute
from virtual4
where game_id in (select distinct game_id from virtual4 order by game_id)
limit 10