Oracle小案例(2)

有如下三张表:

销售表:SALE_FACT

 工号   年月   城市   客户   销售额 
C00001 201601 上海 A 1000
C00001 201601 上海 B 5000
C00001 201601 上海 C 300
C00001 201601 上海 D 800
C00004 201601 北京 E 600
C00004 201602 长春 F 300
C00006 201603 沈阳 G 9000
C00007 201604 哈尔滨 H 800
C00008 201605 沈阳 I 2200
C00008 201606 大连 J 1200

员工表:DIM_EMP

工号 姓名
C00001 张三
C00002 李四
C00003 王五
C00004 赵六
C00005 林七
C00006 钱八
C00007 宋十
C00008 李白
C00009 陆游
C00010 王林

拜访表:VISIT_FACT

工号 年月 客户 拜访次数
C00001 201601 A 5
C00001 201601 B 6
C00001 201601 C 9
C00001 201601 D 22
C00004 201601 E 33
C00004 201602 F 44
C00006 201603 G 100
C00007 201604 H 6
C00008 201605 I 9
C00008 201606 J 8

问题如下:

1.查出每个员工每个月的总销售额

2.查出每个员工每个月的总拜访次数

3.查出每个员工每个城市的总销售额

4.查出全年销售额最大的员工

5.列出全年销售额从大到小排序员工姓名及其全年销售额

6.列出每个员工当年的销售额及其当年总的拜访次数

7.查出拜访次数最多的员工的全年销售额

下面我们先进行前期表和数据的准备

1.创建销售事实表:

CREATE TABLE SALE_FACT(
     EMPNO NVARCHAR2(10)
    ,YEAR_MONTH CHAR(6)
    ,CITY VARCHAR(10)
    ,CLIENT VARCHAR(10)
    ,SALES NUMBER);

2.往销售事实表中插入数据:

--往销售事实表中插入数据
INSERT INTO SALE_FACT VALUES(‘C00001‘,‘201601‘,‘上海‘,‘A‘,1000);
INSERT INTO SALE_FACT VALUES(‘C00001‘,‘201601‘,‘上海‘,‘B‘,5000);
INSERT INTO SALE_FACT VALUES(‘C00001‘,‘201601‘,‘上海‘,‘C‘,300);
INSERT INTO SALE_FACT VALUES(‘C00001‘,‘201601‘,‘上海‘,‘D‘,800);
INSERT INTO SALE_FACT VALUES(‘C00004‘,‘201601‘,‘北京‘,‘E‘,600);
INSERT INTO SALE_FACT VALUES(‘C00004‘,‘201602‘,‘长春‘,‘F‘,300);
INSERT INTO SALE_FACT VALUES(‘C00006‘,‘201603‘,‘沈阳‘,‘G‘,9000);
INSERT INTO SALE_FACT VALUES(‘C00007‘,‘201604‘,‘哈尔滨‘,‘H‘,800);
INSERT INTO SALE_FACT VALUES(‘C00008‘,‘201605‘,‘沈阳‘,‘I‘,2200);
INSERT INTO SALE_FACT VALUES(‘C00008‘,‘201606‘,‘大连‘,‘J‘,1200);

3.创建员工维度表:

CREATE TABLE DIM_EMP(
  EMPNO NVARCHAR2(10)
 ,EMPNAME NVARCHAR2(10));

4.往员工维度表插入数据:

--往员工维度表插入数据
INSERT INTO DIM_EMP VALUES(‘C00001‘,‘张三‘);
INSERT INTO DIM_EMP VALUES(‘C00002‘,‘李四‘);
INSERT INTO DIM_EMP VALUES(‘C00003‘,‘王五‘);
INSERT INTO DIM_EMP VALUES(‘C00004‘,‘赵六‘);
INSERT INTO DIM_EMP VALUES(‘C00005‘,‘林七‘);
INSERT INTO DIM_EMP VALUES(‘C00006‘,‘钱八‘);
INSERT INTO DIM_EMP VALUES(‘C00007‘,‘宋十‘);
INSERT INTO DIM_EMP VALUES(‘C00008‘,‘李白‘);
INSERT INTO DIM_EMP VALUES(‘C00009‘,‘陆游‘);
INSERT INTO DIM_EMP VALUES(‘C00010‘,‘王林‘);

5.创建员工拜访事实表:

CREATE TABLE VISIT_FACT(
  EMPNO NVARCHAR2(10)
 ,YEAR_MONTH CHAR(6)
 ,CLIENT NVARCHAR2(10)
 ,VISIT_COUNT NUMBER);

6.往拜访事实表插入数据:

--往拜访事实表插入数据
INSERT INTO VISIT_FACT VALUES(‘C00001‘,‘201601‘,‘A‘,5);
INSERT INTO VISIT_FACT VALUES(‘C00001‘,‘201601‘,‘B‘,6);
INSERT INTO VISIT_FACT VALUES(‘C00001‘,‘201601‘,‘C‘,9);
INSERT INTO VISIT_FACT VALUES(‘C00001‘,‘201601‘,‘D‘,22);
INSERT INTO VISIT_FACT VALUES(‘C00004‘,‘201601‘,‘E‘,33);
INSERT INTO VISIT_FACT VALUES(‘C00004‘,‘201602‘,‘F‘,44);
INSERT INTO VISIT_FACT VALUES(‘C00006‘,‘201603‘,‘G‘,100);
INSERT INTO VISIT_FACT VALUES(‘C00007‘,‘201604‘,‘H‘,6);
INSERT INTO VISIT_FACT VALUES(‘C00008‘,‘201605‘,‘I‘,9);
INSERT INTO VISIT_FACT VALUES(‘C00008‘,‘201606‘,‘J‘,8);
时间: 2024-08-22 15:52:36

Oracle小案例(2)的相关文章

Oracle 小案例

create database cstd; use cstd; /*1:建立学生表*/ create table student ( 学号 char(3) primary key, 姓名 char(8), 性别 char(4), 年龄 int, 班级 char(5) ); insert into student values('108','曾华','男',19,'95033'); insert into student values('105','匡明','男',20,'95031'); ins

Oracle小案例

--创建用户 CREATE USER jim IDENTIFIED BY changeit; --给用户赋登陆连接权限 GRANT CONNECT TO jim; --给用户赋资源权限 GRANT RESOURCE TO jim; --回收登陆权限 REVOKE CONNECT FROM jim; --回收资源操作权限 REVOKE RESOURCE FROM jim; --锁定用户 ALTER USER jim ACCOUNT LOCK; --给用户解锁 ALTER USER jim ACCO

sqoop操作之ETL小案例

Extraction-Transformation-Loading的缩写,中文名称为数据提取.转换和加载.将数据从ORACLE中抽取数据,经过hive进行分析转换,最后存放到ORACLE中去. 本案例是纯demo级别,练手使用 一.需求将emp和dept表的数据分析最后存放到result表. emp和dept表均为oracle自带的表,表结构如下: emp表 EMPNO NUMBER(4) ENAME VARCHAR2(10) JOB VARCHAR2(9) MGR NUMBER(4) HIRE

Eclipse使用JDBC小案例

JDBC(Java Database Connectivity:Java访问数据库的解决方案)定义一套标准接口,即访问数据库的通用API,不同数据库厂商根据各自数据的特点去实现这些接口. 第1部分 JDBC工作过程: 1)加载驱动,建立连接: 2) 创建语句对象: 3) 执行SQL语句: 4) 处理结果集: 5) 关闭连接: 第2部分 JDBC具体使用步骤: 1) 导入JDBC驱动jar: 2) 注册JDBC驱动: 参数:“驱动程序类名” Class.forName(“驱动程序类名”); 3)

Windows Server之浅谈SMB以及SMB小案例分享

SMB由来 服务器消息区块(英语:Server Message Block,缩写为SMB,服务器消息区块),又称网络文件共享系统(英语:Common Internet File System,缩写为CIFS),一种应用层网络传输协议,由微软开发,主要功能是使网络上的机器能够计算机文件.打印机.串行端口和通讯等资源.它也提供经认证的进程间通信机能.它主要用在装有Microsoft Windows的机器上,在这样的机器上被称为Microsoft Windows Network. SMB版本 OS W

Thinkphp 生成订单号小案例

Thinkphp 生成订单号小案例小伙伴们在日常的商城项目开发中,都会遇到订单号生成的问题,今天呢思梦PHP就带领大家去解读一下生成订单号的问题!首先,订单号我们要明确它有有3个性质:1.唯一性 2.不可推测性 3.效率性,唯一性和不可推测性不用说了,效率性是指不能频繁的去数据库查询以避免重复.况且满足这些条件的同时订单号还要足够的短.不知道小伙伴们在日常的项目中是否也和我一样去思考过生成订单的一些小问题,可能你也会说,这些东西不用想的那么复杂,其实呢,小编也是同意大家的看法,但是殊不知我们做程

几个数据库的小案例(一):将文本文件中的信息导入数据库的表中

从文本文件添加到数据库用户表的记录(有两个文件:frmMain.cs  SqlHelper.cs  ) //FrmMain.cs//作者:Meusing System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Fo

Java小案例(行星移动)

Java小案例 行星移动:参考:三百集 使用软件:idea2017,java 1,图片集:这里  (idea图片源放在target目录下,才能访问到),建议从小往上看... 2,定义MyFrame package my.university; import java.awt.*; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; public class MyFrame extends Frame {

图书借阅的小案例

这个小案例,主要练习类和方法的创建与调用 void Main() { while (true) { Console.WriteLine ("请输入标题或作者"); var key = Console.ReadLine().Trim(); Library.Search(key).Dump(); Console.WriteLine ("请输入要借阅/归还的图书编号"); var id = Convert.ToInt32(Console.ReadLine()); var