Oracle 仅按一列分组但 select 多列
Oracle Group by only one column but select many columns
对象类型:
Theatre_t (tno:整数, nome:string, city:string, phone:string)
Star_t (nome:string, gender:char(l), birthdate:date)
Stars_nt table 之星_t
Film_t (片号:整数, title:string, language:string, director:string,
budget:float,星星 stars_nt)
Show_t(电影参考 film_t,剧院参考 theatre_t,startdate:date,enddate:date)
表格
theatre_t 的剧院(没有主键)
film_t的电影(filmno主键)
嵌套 table 星存储为 stars_ntb
放映show_t(电影参考电影,剧院参考剧院)
我需要为每个剧院获取播放时间最长的电影名称period.and显示剧院名称、城市和电影名称。
我尝试了很多方法,但我无法实现,因为在 oracle sql 中,我们无法将不在分组依据中的列添加到 select。我只需要按剧院名称分组并显示最长的剧院名称 运行 电影名称和剧院所在的城市。
也许您需要 KEEP 扩展。
例如:“显示每个部门的最低工资”很简单
SQL> select deptno, min(sal)
2 from emp
3 group by deptno;
但现在你想加上谁的工资也是最低的,这让你陷入困境
SQL> select deptno, empno, min(sal)
2 from emp
3 group by deptno;
ORA-00979: not a GROUP BY expression
可以使用KEEP解析子句来帮忙
SQL> select
2 deptno,
3 min(sal),
4 min(empno) keep ( dense_rank FIRST order by sal) empno,
5 min(job) keep ( dense_rank FIRST order by sal) job,
6 min(ename) keep ( dense_rank FIRST order by sal) ename
7 from emp
8 group by deptno
9 /
DEPTNO MIN(SAL) EMPNO JOB ENAME
---------- ---------- ---------- --------- ----------
10 1300 7934 CLERK MILLER
20 800 7369 CLERK SMITH
30 950 7900 CLERK JAMES
关于分析的全套教程SQL,包括上面的内容
https://www.youtube.com/watch?v=0cjxYMxa1e4&list=PLJMaoEWvHwFIUwMrF4HLnRksF0H8DHGtt
对象类型:
Theatre_t (tno:整数, nome:string, city:string, phone:string)
Star_t (nome:string, gender:char(l), birthdate:date) Stars_nt table 之星_t
Film_t (片号:整数, title:string, language:string, director:string, budget:float,星星 stars_nt)
Show_t(电影参考 film_t,剧院参考 theatre_t,startdate:date,enddate:date)
表格
theatre_t 的剧院(没有主键)
film_t的电影(filmno主键) 嵌套 table 星存储为 stars_ntb
放映show_t(电影参考电影,剧院参考剧院)
我需要为每个剧院获取播放时间最长的电影名称period.and显示剧院名称、城市和电影名称。
我尝试了很多方法,但我无法实现,因为在 oracle sql 中,我们无法将不在分组依据中的列添加到 select。我只需要按剧院名称分组并显示最长的剧院名称 运行 电影名称和剧院所在的城市。
也许您需要 KEEP 扩展。
例如:“显示每个部门的最低工资”很简单
SQL> select deptno, min(sal)
2 from emp
3 group by deptno;
但现在你想加上谁的工资也是最低的,这让你陷入困境
SQL> select deptno, empno, min(sal)
2 from emp
3 group by deptno;
ORA-00979: not a GROUP BY expression
可以使用KEEP解析子句来帮忙
SQL> select
2 deptno,
3 min(sal),
4 min(empno) keep ( dense_rank FIRST order by sal) empno,
5 min(job) keep ( dense_rank FIRST order by sal) job,
6 min(ename) keep ( dense_rank FIRST order by sal) ename
7 from emp
8 group by deptno
9 /
DEPTNO MIN(SAL) EMPNO JOB ENAME
---------- ---------- ---------- --------- ----------
10 1300 7934 CLERK MILLER
20 800 7369 CLERK SMITH
30 950 7900 CLERK JAMES
关于分析的全套教程SQL,包括上面的内容
https://www.youtube.com/watch?v=0cjxYMxa1e4&list=PLJMaoEWvHwFIUwMrF4HLnRksF0H8DHGtt