oracle使用listagg查询电影数据
2016-09-02 08:54
477 查看
需求 电影名、类别、播放次数、评分
已知的表结构
MOVIE表
MOVIE_ID
TITLE
YEAR
BUDGET
GROSS
PLOT_SUMMARY
MOVIE_GENRE表
MOVIE_ID
GENER_ID
GENRE表
GENRE_ID
NAME
MOVIE_FACT表
CUST_ID
MOVIE_ID
GENRE_ID
ACTIVITY_ID
CUST_RATING表
USERID
MOVIEID
RATING
SELECT A.MOVIE_ID,
A.TITLE,
A.GENRE,
NVL(B.COUNT,0) AS PLAY_COUNT,
NVL(C.RATING,0) AS RATING
FROM
(SELECT MOVIE.MOVIE_ID,
MOVIE.TITLE,
LISTAGG(GENRE.NAME,',') WITHIN GROUP(
ORDER BY GENRE.NAME) AS GENRE
FROM MOVIE,
MOVIE_GENRE,
GENRE
WHERE MOVIE.MOVIE_ID = MOVIE_GENRE.MOVIE_ID
AND GENRE.GENRE_ID = MOVIE_GENRE.GENRE_ID
GROUP BY MOVIE.MOVIE_ID,
MOVIE.TITLE
) A
LEFT JOIN
(SELECT MOVIE_ID,
COUNT(MOVIE_ID) AS COUNT
FROM MOVIE_FACT
WHERE ACTIVITY_ID = 4
GROUP BY MOVIE_ID
) B
ON B.MOVIE_ID = A.MOVIE_ID
LEFT JOIN
(SELECT CUST_RATING.MOVIEID AS MOVIE_ID,
COUNT(CUST_RATING.RATING) AS RATING
FROM CUST_RATING
GROUP BY CUST_RATING.MOVIEID
) C
ON A.MOVIE_ID = C.MOVIE_ID
已知的表结构
MOVIE表
MOVIE_ID
TITLE
YEAR
BUDGET
GROSS
PLOT_SUMMARY
MOVIE_GENRE表
MOVIE_ID
GENER_ID
GENRE表
GENRE_ID
NAME
MOVIE_FACT表
CUST_ID
MOVIE_ID
GENRE_ID
ACTIVITY_ID
CUST_RATING表
USERID
MOVIEID
RATING
SELECT A.MOVIE_ID,
A.TITLE,
A.GENRE,
NVL(B.COUNT,0) AS PLAY_COUNT,
NVL(C.RATING,0) AS RATING
FROM
(SELECT MOVIE.MOVIE_ID,
MOVIE.TITLE,
LISTAGG(GENRE.NAME,',') WITHIN GROUP(
ORDER BY GENRE.NAME) AS GENRE
FROM MOVIE,
MOVIE_GENRE,
GENRE
WHERE MOVIE.MOVIE_ID = MOVIE_GENRE.MOVIE_ID
AND GENRE.GENRE_ID = MOVIE_GENRE.GENRE_ID
GROUP BY MOVIE.MOVIE_ID,
MOVIE.TITLE
) A
LEFT JOIN
(SELECT MOVIE_ID,
COUNT(MOVIE_ID) AS COUNT
FROM MOVIE_FACT
WHERE ACTIVITY_ID = 4
GROUP BY MOVIE_ID
) B
ON B.MOVIE_ID = A.MOVIE_ID
LEFT JOIN
(SELECT CUST_RATING.MOVIEID AS MOVIE_ID,
COUNT(CUST_RATING.RATING) AS RATING
FROM CUST_RATING
GROUP BY CUST_RATING.MOVIEID
) C
ON A.MOVIE_ID = C.MOVIE_ID
相关文章推荐
- ORACLE用户常用数据字典的查询使用方法
- oracle使用子查询插入和修改数据
- oracle运用(一) oracle数据库使用 TIMESTAMP()类型查询数据
- 怎么使用robomongo查询mongodb(就像用plsql,输入sql语句,查询oracle数据一样)?
- Oracle查询索引碎片及数据表空间使用情况
- 使用oracle闪回查询功能恢复之前删除的数据
- ORACLE ASM中查询表空间使用情况、数据文件路径、裸设备磁盘总大小剩余大小
- 解决在mybatis中使用CTE进行oracle查询数据类型为long的字段出现流关闭问题
- Oracle使用游标查询指定数据表的所有字段名称组合而成的字符串
- 使用oracle 闪回查询找回误更新的数据
- ORACLE用户常用数据字典的查询使用方法(转载收集)
- Oracle编辑数据时提示:这些查询结果不可更新,请使用ROWI或者SELECT……FOR UPDATE获得可更新结果。
- ORACLE用户常用数据字典的查询使用方法
- 解决在mybatis中使用CTE进行oracle查询数据类型为long的字段出现流关闭问题
- 使用oracle 9i 里的层级查询(Hierarchical Queries)实现树状表结构的递归数据查询
- vc++6.0中使用OCCI前的配置 链接oracle查询数据的示例
- oracle 数据库的管理工具 PL/SQL_Developer 的简易使用 与Java 连接并查询显示出数据
- oracle 中通过使用客户端导致查询出来的中文数据为乱码的解决方式
- ORACLE-用户常用数据字典的查询使用方法
- oracle12c JSON数据 使用SQL语句实现多表左外连接 显示无效数据 分页查询