-3

各ジャンルに基づいて映画の平均コストを計算する必要があるクエリを作成しています。このクエリを作成するために MySQL を使用しています。これまでのところ、私は `

SELECT 
    MOVIE_NUM,
    MOVIE_GENRE,    
    ROUND(AVG(MOVIE_COST), 2) AS 'AVERAGE COST',
    MOVIE_COST
FROM
    MOVIE
GROUP BY MOVIE_GENRE 
ORDER BY MOVIE_NUM

これにより、次の出力が得られます。

MOVIE_NUM  MOVIE_GENRE  AVERAGE COST  MOVIE_COST
1234       FAMILY       39.95         39.95
1235       ACTION       52.72         59.95
1236       DRAMA        58.46         59.95
1237       COMEDY       44.12         29.95

ただし、次の形式で必要です。

MOVIE_NUM  MOVIE_GENRE  AVERAGE COST  MOVIE_COST
1234       FAMILY       39.95         39.95
1235       ACTION       52.72         59.95
1236       DRAMA        58.46         59.95
1237       COMEDY       44.12         29.95
1238       DRAMA        58.46         89.95
1239       DRAMA        58.46         25.49
1245       ACTION       52.72         45.49
1246       COMEDY       44.12         58.29

どんな助けでも大歓迎です。前もって感謝します。

4

2 に答える 2

1

グループ化している同じクエリからすべてのレコードを取得することはできません。1つのクエリで平均を計算し、テーブルに対して結合します。

selecct
  m.MOVIE_NUM,
  m.MOVIE_GENRE,
  a.AVGCOST AS 'AVERAGE COST',
  m.MOVIE_COST
from
  MOVIE as m
  inner join (
    select MOVIE_GENRE, round(avg(MOVIE_COST)) as AVGCOST
    from MOVIE
    group by MOVIE_GENRE
  ) as a on a.MOVIE_GENRE = m.MOVIE_GENRE
order by MOVIE_NUM
于 2012-11-11T23:57:05.390 に答える
1

mysqlでこれを行うには、より短い方法があるかもしれません。これは、トリックごとにいくつかのきちんとしたグループがあるためですが、これは機能するはずです。

Select
  m.Movie_Num,
  m.Movie_Genre,    
  gc.Average_Cost,
  m.Movie_Cost
From
  Movie m
    Inner Join (
      Select
        Movie_Genre,
        Round(Avg(Movie_Cost), 2) AS 'Average_Cost'
      From
        Movie
      Group By
        Movie_Genre
      ) as gc
     On m.Movie_Genre = gc.Movie_Genre
Order By 
  m.Movie_Num
于 2012-11-11T23:59:01.477 に答える