-- 多对多的秘密:项目中,往往把关系分拆出一张单独表

--维表(学生维度)

create table t_stu(

id number primary key,

user_name varchar2(10)

);

insert into t_stu values(1,'小军');

insert into t_stu values(2,'小黄');

commit

select * from t_stu

drop table t_ke

--维表(课程维度)

create table t_ke(

id number primary key,

ke_name varchar2(100)

);

insert into t_ke values(1,'高等数学');

insert into t_ke values(2,'离散数学');

insert into t_ke values(3,'牛顿法');

insert into t_ke values(4,'大学英语');

insert into t_ke values(5,'马克思主义');

insert into t_ke values(6,'江泽明思想');

insert into t_ke values(7,'邓小平理论');

commit

select * from t_ke

-- 事实表

CREATE TABLE t_stu_ke(

id NUMBER PRIMARY KEY,

user_id NUMBER(5),

ke_id NUMBER(5)

);

delete from t_stu_ke

insert into t_stu_ke values(1,1,1);

insert into t_stu_ke values(2,1,2);

insert into t_stu_ke values(3,1,6);

commit;

insert into t_stu_ke values(4,2,4);

insert into t_stu_ke values(5,2,6);

commit;

select sk.id,s.user_name,k.ke_name from t_stu_ke sk

left join t_stu s on sk.user_id =s.id

left join t_ke k on sk.ke_id=k.id

insert into t_stu_ke values(6,3,3);

insert into t_stu_ke values(7,2,8);

commit

select

sk.id,

nvl(s.user_name,'未知学生:'||sk.user_id) 学生,

nvl(k.ke_name,'未知课程:'||sk.ke_id) 选课

from t_stu_ke sk

left join t_stu s on sk.user_id =s.id

left join t_ke k on sk.ke_id=k.id

-- 站在不通的维度看世界  

group by

--1.查询有多少科

select * from t_ke

select count(1) from t_ke

--2.查询同学选了多少课

select count(1) from

(select distinct ke_id from t_stu_ke) tt

--3.查选一下每个同学各选多少课

-- group by 有5个聚合函数count

select user_id,count(1) from t_stu_ke group by user_id

--4.查选一下每个同学各选多少课(条件是这个课程必须存在)

select user_id,count(1) from t_stu_ke

where ke_id in (select id from t_ke)

group by user_id

--5.查选一下每门课程各有多少学生选

select * from t_ke

--错误示范:

select ke_id,count(1) from t_stu_ke group by ke_id

--正确:

select ke_name,count(ke_id) from t_ke

left join t_stu_ke

on t_ke.id=t_stu_ke.ke_id

group by ke_name

--6.查选一下每门课程各有多少学生选

-- 条件:【显示人数】1人以上的课程

-- 思路:【显示人数】-->>集合数,不能用where,改用having

select ke_name,count(ke_id) r from t_ke

left join t_stu_ke

on t_ke.id=t_stu_ke.ke_id

group by ke_name

having count(ke_id)>=1

order by r desc

-- 7 查询出现毛的课程出来

select * from t_ke where ke_name like '%毛%'

-- 8 最多人选的课程是什么?

-- 思路1:

select * from t_ke where id=

(select ke_id from (

select ke_id,count(1) tt from t_stu_ke

group by ke_id order by tt desc

) where rownum=1)

--思路2(不推荐)

select * from t_ke where id=(

select ke_id from

(select ke_id,count(1) tt from t_stu_ke group by ke_id) where tt =

(select max(tt) from

(select ke_id,count(1) tt from t_stu_kegroup by ke_id) tt)

);

转载于:https://www.cnblogs.com/wyj1212/p/8567749.html

ORACLE1.13-综合例子应用01相关推荐

  1. 综合评价与决策方法01——理想解法

    综合评价与决策方法01--理想解法 顶!!! 数学建模 综合评价与决策方法01--理想解法 前言 一.理想解法 1. 方法和原理 2. TOPSIS法的算法步骤 3. 示例 肝!!! 前言 评价方法大 ...

  2. MS SQL Server2005存储过程、游标、游标嵌套综合例子

    MS SQL Server2005存储过程.游标.游标嵌套综合例子: 放在这里备忘>>> Java代码 create proc decisionPathRefSchemes as b ...

  3. c语言单片机自动浇花系统,Arduino零基础C语言编程ch5-5.13综合示例–自动浇花系统...

    <Arduino零基础C语言编程ch5-5.13综合示例–自动浇花系统>由会员分享,可在线阅读,更多相关<Arduino零基础C语言编程ch5-5.13综合示例–自动浇花系统(5页珍 ...

  4. java try catch 例子_Java异常处理综合例子(try、catch、finally、throws、throw)

    Java异常处理综合例子(try.catch.finally.throws.throw) 佟强 2009年11月4日 http://blog.csdn.net/microtong package cn ...

  5. CSS综合复习笔记 01

    1.1开发前的准备工作            1.配置开发环境(常用前端开发工具)           (1)sublime           (2)webstorm           (3)vs ...

  6. struts2综合例子--------拦截器(登陆检查,日志记录),校验validate,

    列表Action package he.action;import he.dao.UserDAO;import java.sql.SQLException; import java.util.Link ...

  7. php数组排序综合例子,php数组实例之数组排序

    1,php数组排序的小例子 例1,sort().rsort()/asort().arsort()对数组排序:/p> $array = array("b","c&qu ...

  8. 6.6(java学习笔记)文件分割(IO综合例子)

    基本思路: 文件分割:将一个文件分割成若干个独立的文件.    设置分割后小文件文件的字节数,然后读取被分割文件, 将对应的字节数写入分割后的小文件中.     使用seek定位下一次读取位置. 文件 ...

  9. 10_官方例子程序01

    http://www.roboticslibrary.org/api http://www.roboticslibrary.org/tutorials/first-steps-windows RL的库 ...

最新文章

  1. python小游戏源码-导弹发射小游戏——Python源代码
  2. std::move C++11 标准新特性: 右值引用与转移语义
  3. abaqus pythonreader_【技术邻】Abaqus里应用Python的一些技巧
  4. 排坑 | Exceptionless 5.x 无法正常发送邮件
  5. java的visitor模式_java设计模式(二十一)访问者模式(Visitor)
  6. 算法高级(41)-推荐算法实现
  7. 吴恩达|机器学习作业2.0Logistic 回归
  8. 反思 大班 快乐的机器人_幼儿园大班教案《蚂蚁宝宝钻洞》含反思
  9. python时间如何处理_python 时间处理
  10. mysql myd文件过大_Mysql数据文件大小超过4G了如何缩小优化
  11. 下载链接在微信中无法打开的解决方案
  12. python中英文文本情感分析
  13. 剑指offe【31-67】
  14. 数学问题1 - 两个圆圈,小圆贴着大圆外部转过一圈,问小圆转几圈
  15. c语言如何编写对数程序,在C语言中使用对数函数的方法
  16. 宽带拨号密码查看工具
  17. 一键安装ghost轻博客
  18. 三个大傻大闹你的脑袋,如何让他们胜过一个诸葛亮?
  19. android 加速度计算公式,android – 使用加速度计计算旋转矩阵
  20. 提高php性能的介意,ThinkPHP5提升性能的办法_浙江PHP博客

热门文章

  1. 零基础转行自学前端,怎么学习更系统?
  2. 还在迷茫于前端如何入门和进阶?万字指南让你不再迷茫!
  3. 面试容易问的 JavaScript 知识点,你知道几个?
  4. 单例模式、使用getInstance()方法的原因及作用
  5. 软件中打开其他软件的方式
  6. addWeighted()
  7. python运行游戏是否需要pygame_用Python和Pygame写游戏-从入门到放弃(1)
  8. python怎么弄成白色背景_使用PIL python将白色背景转换为透明背景
  9. 业余学python 树莓派_厉害了!小伙自学Python一个月,利用树莓派制作了黑客优盘工具!...
  10. 工科学生考研能选择计算机专业么,考研应该如何选择学校和专业