使用 SQL 实战处理惩罚2020国赛C题数据
前天本人发表了一篇先容 SQL 入门以及进阶的文章,希望对各人入门有用。但只看不练资助不会特别大,本日我就特地找了本年国赛C题的数据,来举行简朴的处理惩罚,让各人更早的打仗实战。(之前那篇文章虽然写的比力多和杂,但真正应用到数据处理惩罚的时候,许多都用不到,所以不要怂哦~)
- 工具
本人使用的是 DataGrip,优点是界面比力符合我的风格,和 Pycharm,IDEA,WebStorm 等都是 JetBrain 系列的,另有代码提示增补等功能。缺点就是占内存。用其他的软件也是可以的,只要能连数据库,能写SQL语句。CMD也可!
- 数据
这次使用的是2020年国赛C题数据,可以从官网上举行下载,也可以使用这里的数据
https://pan.baidu.com/s/1mjW4a_sg7Y4b9kx98pk4Uw 提取码: u47j
- 数据导入
虽然之前的文章提到了如何从 Excel 中导入数据,但文件中的 Excel 有多个 sheet 以及 表头,利用有点贫苦,这里我就用了一个比力笨的方法。如果有比力简朴的方法还请各人告知。
- 将 文件中的 xlsx 数据文件另存为 csv 文件,这时候他会提示选定的文件不包罗多份工作表,也就是说它不能把多个 sheet 全都生存在 csv文件,只会生存当前sheet,点击确定即可。这也就表明每一个 sheet 都要举行一次这样的利用。
- 这里只对 DataGrip 的导入举行解说,其他软件的可以自行百度。
右击创建的table,table的键以及属性要与导入数据的列相对应,即键的个数与列的个数对应,键的范例要符合实际。
选中要导入的csv文件,接下来会出现以下界面,如果第一行是列的名字,就选择第一行是头的选项,列也是一样的原理,接着把 编码方式 从 UTF-8 改成 GBK,最后导入即可。
如果导入过程堕落的话,很大大概是因为键的数据范例与导入数据范例不匹配,比如 A00297 为 float 范例的话 极有大概是要堕落的,一般情况下,table创建的时候书写的键的顺序 与 csv文件列从左到右的顺序 相对应。
- 数据查询提取
这里以企业信息表以及进项发票信息表为例,来举行简朴的处理惩罚
- show databases; create database baseC; use baseC; # 企业信息表 create table BusinessInfo ( code varchar(5), # 企业代号 name varchar(30), # 企业名称 credit varchar(2), # 信誉评级 break varchar(5) # 是否违约 ); # 进项发票信息表 create table inProfit ( code varchar(5), #企业代号 number varchar(10), # 发票号码 date date, # 开票时间 targetCode varchar(10), #销方单元代号 money float, #金额 tax float, #税额 sum float, #价税合计 status varchar(10) # 发票状态 );
复制代码- # 统计企业数量 select count(*) from BusinessInfo; # 查找未违约的企业数 96 select * from BusinessInfo where break = '否'; # 查找违约的企业数 27 select * from BusinessInfo where break = '是'; # 查找 A 品级的企业数 27 select count(*) from BusinessInfo where credit = 'A'; # 查找 B 品级的企业数 38 select count(*) from BusinessInfo where credit = 'B'; # 查找 C 品级的企业数 34 select count(*) from BusinessInfo where credit = 'C'; # 查找 D 品级的企业数 24 select count(*) from BusinessInfo where credit = 'D';
复制代码- # 查找企业的 总生意业务额 总税额等 select code as '企业', sum(money) as '企业总金额', sum(tax) as '企业总税额', sum(sum) as '企业价税合计' from inProfit group by code; # 查找 企业的生意业务数量 select code as '企业', count(*) as '生意业务数量' from inProfit group by code; # 查找企业的 总生意业务额 总税额等 并按照企业总金额升序分列 select code as '企业', sum(money) as '企业总金额', sum(tax) as '企业总税额', sum(sum) as '企业价税合计' from inProfit group by code order by sum(money); # 查找 企业的生意业务数量 并按照生意业务数量升序分列 select code as '企业', count(*) as '生意业务数量' from inProfit group by code order by count(*); select code as '企业', YEAR(date) as '年份', sum(money) as '企业总金额', sum(tax) as '企业总税额', sum(sum) as '企业价税合计' from inProfit group by code, YEAR(date); # 按照年份查找企业的 总生意业务额 总税额等 select code as '企业', YEAR(date) as '年份', MONTH(date) as '月份', sum(money) as '企业总金额', sum(tax) as '企业总税额', sum(sum) as '企业价税合计' from inProfit group by code, YEAR(date), MONTH(date); # 按照年份查找企业的 总生意业务额 总税额等 select code as '企业', YEAR(date) as '年份', sum(money) as '企业总金额', sum(tax) as '企业总税额', sum(sum) as '企业价税合计' from inProfit group by code, YEAR(date); # 按照年份查找企业的 总生意业务额 总税额等 抛弃无效发票 select code as '企业', YEAR(date) as '年份', sum(money) as '企业总金额', sum(tax) as '企业总税额', sum(sum) as '企业价税合计' from inProfit where status = '有效发票' group by code, YEAR(date); # 按照年份月份查找企业的 总生意业务额 总税额等 抛弃无效发票 select code as '企业', YEAR(date) as '年份', MONTH(date) as '月份', sum(money) as '企业总金额', sum(tax) as '企业总税额', sum(sum) as '企业价税合计' from inProfit where status = '有效发票' group by code, YEAR(date), MONTH(date);
复制代码
- 小结
上面得到的数据不多,焦点之处就是针对差别的企业将其营业额等数据根据年大概月为单元举行求和,以便于背面的预测分析。其他未处理惩罚的表也就是按照这个套路来,简短的几行代码就把数据提取出来了,想想自己当时写了几百行代码还没有提取出来的狼狈样子,数据库真是相见恨晚啊!如果各人对C题另有什么想提取的数据,我们可以一起讨论,一起进步哦~
别的本文所涉及的代码以及提取的数据效果我已经打包有需要的请自取~
https://pan.baidu.com/s/12fg3BlhwHw5oN9OA0UdxRw提取码: anee
来源:https://blog.csdn.net/qq_44614115/article/details/112049130
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |