sql代码 day 3

SELECT * FROM `数据1`;

-- 1.新建一个 ”作业“ 数据库 

--   CREATE DATABASE 作业;

-- 2. 数据1.txt 导入数据库
 
--    把V3 字段转换为字符串 
ALTER TABLE `数据1` MODIFY v3 VARCHAR	(10);

 
--    把v1 为 786.1 的 改为 790
UPDATE  `数据1` SET  v1 ='790'  WHERE v1='786.1';
-- 
-- 3. 把 数据.xlsx 导入到数据库


--     删除用户id大于 8 的记录
DELETE FROM  数据 WHERE 用户id>8;
--     把用户id 为 3的 商品数加一倍
SELECT * FROM 数据 ;
SELECT 商品数*2 FROM 数据 WHERE 用户id ='3';
--     新加一个毛利列
ALTER  TABLE 数据 ADD 毛利 FLOAT; 
SELECT * FROM 数据;
--     计算毛利列的值
DESC 数据;
ALTER TABLE 数据 drop 总金额折扣;
ALTER TABLE 数据 MODIFY 总金额 FLOAT;
ALTER TABLE 数据 MODIFY 折扣 FLOAT;
DELETE FROM 数据 WHERE 日期 is NULL;
UPDATE 数据  set 毛利 = 总金额*折扣 ;
-- 
-- 4. 新建test 表
--    字段为  学校 班级  地区 人数
--    添加新记录
--    AAA  111  北京  18
--    AAA  115  天津
 CREATE TABLE test (
	学校 VARCHAR(10),
	班级 VARCHAR(10)
	地区 VARCHAR(10),
	人数 int
);

INSERT INTO test(学校,班级,地区,人数) VALUES('AAA','111','北京',18),('AAA' , '115' , '天津',NULL);
DELETE FROM test WHERE 地区='北京';

--    北京地区的 人数改为20,班级改为 118
UPDATE test set 人数=20,班级='118' WHERE 地区='北京';

--    天津地区的 学校改为 南开
  UPDATE test set 学校='南开' WHERE 地区='天津';



------------
-- 
-- #贷款表,客户隶属表

-- 
-- # 删除客户隶属表的辅助列
ALTER TABLE 客户隶属表 DROP 辅助列;
-- 
-- #大区 ,借款类型 无缝连接
SELECT DISTINCT(CONCAT(大区,借款类型) )FROM 贷款表;


-- 
-- #借款类型 所属销售 以 |线分割连接
SELECT DISTINCT(CONCAT( 借款类型,'|',所属销售)) FROM 贷款表;
-- 
-- #所属销售中 "文" 字所在的位置(通过三个函数查找)
SELECT 所属销售,LOCATE('文',所属销售),POSITION('文' in 所属销售),INSTR(所属销售,'文') FROM 贷款表;

-- 
-- #脱敏手机中 5的位置(客户隶属表)
SELECT 脱敏手机, LOCATE('5',脱敏手机) FROM 贷款表 ;


-- 
-- #借款类型的字符串长度,字节长度
SELECT 借款类型,char_LENGTH(借款类型) FROM 贷款表;
-- 
-- #精英A类 和 精英B类 都改为精英类
UPDATE 贷款表 set  借款类型='精英类' WHERE 借款类型='精英A类' or 借款类型='精英B类';
-- 
-- #统计个借款类型的人数,平均金额,最大金额,最小金额
SELECT 借款类型,COUNT(借款类型),AVG(金额),max(金额),min(金额) FROM 贷款表 GROUP BY 借款类型;
DESC 贷款表;
-- 
-- #统计个借款类型的人数 显示格式为 

--     公积金类  精英类   工薪类

-- 	人数		人数     人数

SELECT  sum(if( 借款类型= '公积金类',  1 ,0))as 公积金类 ,
sum(if( 借款类型= '精英类',  1 ,0))as 精英类 ,
sum(if( 借款类型= '工薪类',  1 ,0)) as 工薪类
FROM 贷款表 ;
-- #按大区统计平均金额,最大金额,最小金额 
-- #按大区统计借款类型的人数 显示格式为 
--      公积金类  精英类   工薪类
-- 华西  	人数		人数     人数
-- 华北  	人数		人数     人数
-- .
-- .
SELECT 大区, sum(if( 借款类型= '公积金类',  1 ,0))as 公积金类 ,
sum(if( 借款类型= '精英类',  1 ,0))as 精英类 ,
sum(if( 借款类型= '工薪类',  1 ,0)) as 工薪类
FROM 贷款表 WHERE 大区 in('华西','华北' ) GROUP BY 大区;


-- # 列出每位销售的客户名(客户隶属表)
SELECT 所属销售,GROUP_CONCAT(DISTINCT 脱敏姓名)脱敏姓名 FROM 贷款表 GROUP BY 所属销售;
-- 
-- 
-- #总表
-- 去掉课程名称的 括号及其中内容
UPDATE 总表 set 课程名称=left(课程名称,LOCATE('(',课程名称)-1) WHERE 课程名称 LIKE "%(%" ;
SELECT * FROM 总表

-- 按开课单位统计课程名称数
SELECT 开课单位,COUNT(课程名称) as 课程数 FROM 总表 GROUP BY 开课单位;
-- 找出清华大学 或人民大学出版的图书
select * FROM 总表
select * FROM 总表 WHERE 出版社 in ('清华大学','中国人民大学出版社') ;
-- 保险学院没带保险字样的书籍 的占比

select sum(if (课程名称 not LIKE '%保险%' ,1,0))/count(开课单位) as 占比 FROM 总表 WHERE 开课单位='保险学院';

-- SELECT if (课程名称 LIKE '保险' ,课程名称,0) FROM 总表 WHERE 开课单位='保险学院'
-- 各开课单位开课数的占比
-- 
SELECT count(课程名称) FROM 总表; 
SELECT 开课单位,COUNT(课程名称)/(SELECT count(课程名称) FROM 总表) as abc FROM  总表 GROUP BY 开课单位;

-- 
-- #业务明细表
-- 各地区各年的平均收入,最高收入,
SELECT * FROM 业务明细;
SELECT if le;

SELECT 城市,LEFT(结算日期,4) ,sum(收入)/count(收入) FROM 业务明细 GROUP BY LEFT(结算日期,4),城市;
-- 各年各用户代码的平均收入总收入,
SELECT 用户代码,LEFT(结算日期,4),sum(收入)/count(收入) as 平均收入,sum(收入) as 总收入 FROM 业务明细 GROUP BY 用户代码,LEFT(结算日期,4);

-- 各业务的总收入并排序
SELECT 业务代码, SUM(收入) FROM 业务明细 GROUP BY 业务代码  ORDER BY  SUM(收入)DESC;
desc 业务明细

-- 各年个月的总收入,并按年升序,收入倒叙
SELECT LEFT(结算日期,4),mid(结算日期,6,2),SUM(收入) FROM  业务明细 GROUP BY LEFT(结算日期,4),mid(结算日期,6,2) 
ORDER BY  SUM(收入) DESC , LEFT(结算日期,4) ASc ;

-- LEFT(结算日期,4) ASc AND

-- 各地区各用户代码的总收入 并按地区升序,收入倒叙
SELECT 城市,用户代码,SUM(收入) FROM 业务明细 GROUP BY 城市,用户代码 ORDER BY  城市,SUM(收入) asc;
-- 各地区个业务代码的总收入 
-- 显示格式为
--    业务代码     CPRJ    cpyj   ... 
--      华西       总收入

SELECT DISTINCT 业务代码 FROM 业务明细;

SELECT 城市 as 业务代码,sum(if (业务代码='CPYJ',收入,0))as CPYJ,
sum(if (业务代码='CPRJ',收入,0))as CPRJ,
sum(if (业务代码='FWHL',收入,0))as FWHL,
sum(if (业务代码='FWPX',收入,0))as FWPX FROM 业务明细 GROUP BY 城市;
 
发布了70 篇原创文章 · 获赞 14 · 访问量 2631

猜你喜欢

转载自blog.csdn.net/Captain_DUDU/article/details/103416872
今日推荐