[英]GROUP BY on one column with multiple columns in SELECT
我有一個具有以下屬性的電影關系:movie_id、title、director、genres、year、revenue_generated、short_description、runtime 和 rating。
我想找到收入最高的每種類型的電影。 我想返回電影的 movie_id、標題、流派和收入最高的每種類型的電影的收入。
我試過以下查詢:
SELECT movie_id, title, genres, MAX(revenue_generated) AS highest_revenue
FROM movies
GROUP BY genres;
但是得到以下錯誤:
ERROR: column "movies.movie_id" must appear in the GROUP BY clause or be used in an aggregate function
我知道這是行不通的,因為它不知道如何按每個類別對 movie_id 和標題進行“分組”。 如果我要執行以下查詢:
SELECT genres, MAX(revenue_generated) AS highest_revenue
FROM movies
GROUP BY genres;
我如何在 output 中獲得這些觀察結果的 movie_id 和標題? 這是正在使用的一些數據的屏幕截圖:
我想找到收入最高的每種類型的電影
在 SQL 服務器和其他幾個平台中,您將在此處使用 ROW_NUMBER(),例如:
with q as
(
SELECT movie_id,
title,
genre,
revenue_generated, row_number() over (partition by genre order by revenue_generated desc) rn
FROM movies
)
select movie_id,
title,
genre,
revenue_generated
from q
where rn = 1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.