数据分析
文章平均质量分 76
关于数据分析的理论和技术基础
在在进步
输出是更好的输入
展开
-
MySQL进阶——触发器
(null, 'insert', now(), new.id, concat('插入的数据内容为:id=',new.id,',name=',new.name, ', phone=', NEW.phone, ', email=', NEW.email, ',profession=', NEW.profession));VALUES (25,'二皇子','18809091212','erhuangzi@163.com','软件工程',23,'1','1',now());触发(影响5行则触发5次),不支持。原创 2024-06-23 15:03:44 · 334 阅读 · 0 评论 -
MySQL进阶——存储过程
用户姓名 (name)和专业(profession),并将用户的姓名和专业插入到所创建的一张新表 (id,name,profession)中。当游标的数据集获取完毕之后,再次获取数据,就会报错,从而终止了程序的执行。局部变量是根据需要定义的在局部生效的变量,访问之前,需要DECLARE声明。可以简化应用开发人员的很多工作,减少数据在数据库和应用服务器之间的传输,对于提高数据处理的效率是有好处的。mysql服务重新启动之后,所设置的全局参数会失效,要想不失效,可以在 /etc/my.cnf 中配置。原创 2024-06-22 21:12:31 · 994 阅读 · 0 评论 -
MySQL进阶——视图
执行id=26时就会失败,因为id=2620的,不满足,所以最终不会运行成功。(1)当不加检查选项:在执行插入时,不管是id=620,都会插入成功,即不会对视图str_v_1的操作进行检查,这样就会出现插入成功,但是查询不出来的情况。(2)加说检查选项:在执行插入时,在执行id=31>20时,会被检查出来,而不被插入进去。原创 2024-06-21 16:47:33 · 987 阅读 · 0 评论 -
MySQL进阶——SQL优化
(1)Using filesort : 通过表的索引或全表扫描,读取满足条件的数据行,然后在排序缓冲区sort buffer中完成排序操作,所有不是通过索引直接返回排序结果的排序都叫 FileSort 排序。因为,当在进行分页查询时,如果执行 limit 1000000,10 ,此时需要MySQL排序前1000010 记 录,仅仅返回 1000000 - 1000010 的记录,其他记录丢弃,查询排序的代价非常大。出 来,返回给服务层,服务层判断是否为null,不为null,计数累加。原创 2024-06-21 14:50:03 · 820 阅读 · 0 评论 -
MySQL进阶——索引【核心】
哈希索引就是采用一定的hash算法,将键值换算成新的hash值,映射到对应的槽位上,然后存储在hash表中。(2)有索引情况:如果我们针对于这张表建立了索引,假设索引结构就是二叉树(存储结构),那么也就意味着,会对age这个字段建立一个二叉树的索引结构。等其他的哈希函数计算地址,直到不发生冲突为止。(1)All全表扫描是性能最差的,null是最好的,但是一般不可能优化到null,null表示不调用任何表;(2)对于B-tree,无论是叶子节点还是非叶子节点,都会保存数据,这样导致一页中存储的键值减少,;原创 2024-06-19 11:24:59 · 1186 阅读 · 0 评论 -
MySQL进阶——存储引擎
如果应用对事务的完整性有比较高的要求,在并发条件下要求数据的一致性,数据操作除了插入和查询之外,还包含很多的更新、删除操作,那么InnoDB存储引擎是比较合适的选择。了MySQL中数据的存储和提取,服务器通过API和存储引擎进行通信不同的存储引擎具有不同的功能,这样我们可以根据自己的需要,来选取合适的存储引擎。,xxx代表的是表名, innoDB引擎的每张表都会对应这样一个表空间文件,存储该表的表结构(frm-早期的、sdi-新版的)、数据和索引。3)区 : 区是表空间的单元结构,每个区的大小为1M。原创 2024-06-16 21:41:15 · 511 阅读 · 0 评论 -
MySQL基础——多表查询和事务
同上的操作,将A将事务的隔离级别设置为read committed,然后在B中进行修改,但是不提交,发现A事务中不会出现赃读情况。select a.name '员工', b.name '领导' from emp a left join emp b on a.managerid = b.id;这一组操作就必须在一个事务的范围内,要么都成功,要么都失败。select a.name '员工', b.name '领导' from emp a , emp b where a.managerid = b.id;原创 2024-06-16 16:02:38 · 1140 阅读 · 0 评论 -
MySQL基础——函数和约束
如下图:左侧的emp表是员工表,里面存储员工的基本信息,包含员工的ID、姓名、年龄、职位、薪资、入职日期、上级主管ID、部门ID,在员工的信息中存储的是部门的ID dept_id,而这个部门的ID是关联的部门表dept的主键id,那emp表的dept_id就是外键,关联的是另一张表的主键。案例:由于业务需求变更,企业员工的工号,统一5位数,目前不足5位数的全部在前面补0。案例:查询emp表的员工姓名和工作地址(北京/上海---->一线城市,其他---->二线城市)案例:通过数据库的函数,生成一个六位数的。原创 2024-06-15 21:02:21 · 715 阅读 · 0 评论 -
MySQL基础——SQL语句
当存储CHAR值时,MySQL会删除字符串中的末尾空格(在MySQL 4.1和更老版本中VARCHAR 也是这样实现的——也就是说这些版本中CHAR和VARCHAR在逻辑上是一样的,区别只是在存储格式上)。字符串,是最常见的字符串数据类型。它比固定长度类型更节省空间,因为它仅使用必要的空间(根据实际字符串的长度改变存储空间)。代码:在添加字段的代码上修改就是将add改为change,原本一个字段名,改为包含旧和新的两个字段名。例:输入,就可查询当前数据库服务器中所有的数据库,包括我刚刚新建的两个。原创 2024-06-15 13:38:52 · 1390 阅读 · 0 评论 -
SQL进阶day12——高级条件语句
正则表达式函数用 RLIKE 或者 REGEXP;left join 和 inner join;where,group by,having的先后顺序,要根据数据的具体情况原创 2024-06-11 22:24:39 · 1321 阅读 · 0 评论 -
SQL进阶day12——空值处理
if(expr,v1,v2);case expr when v1 then r1 [when v2 then r2] ...[else rn] end;avg((if(score is NULL,0,score));timestampdiff(minute,时间1,时间2),是时间2-时间1。原创 2024-06-11 15:08:06 · 526 阅读 · 0 评论 -
SQL进阶day11——窗口函数
1专用窗口函数1.1每类试卷得分前3名我的代码:筛选好难,不懂啥意思select tag tid,uid,rank()over(partition by tag order by score desc ) rankingfrom examination_info ei join exam_record eron ei.exam_id = er.exam_idlimit 3正确代码:select *from (select tag tid,uid,rank()原创 2024-06-06 18:21:38 · 1130 阅读 · 0 评论 -
SQL进阶day10————多表查询
(3)这么如果只是按照month(submit_time) 分组,uid,month(submit_time)只有9和null两种情况,当使用GROUP BY子句时,(1)uid,month(submit_time)是啥呢,如果原来只是按照month(submit_time)进行分组,1002,1003,1005都有多个。timestampdiff,如计算差多少分钟,timestampdiff(minute,时间1,时间2),是时间2-时间1,单位是minute。原创 2024-06-04 19:56:23 · 1030 阅读 · 0 评论 -
SQL面试问题集
union all只是合并查询结果,并不会进行去重和排序操作,在没有去重的前提下,使用union all的执行效率要比union高。有一次性求出次日留存率,3日留存率,7日留存率,30日留存率(我用的datediff做的,感觉不是很好)(2)左连接:连接后左边不可能有null——左边有的,右边没有的为null。join 表名2 on 表名1.字段名 = 表名2.字段名。表名2 on 表名1.字段名 = 表名2.字段名。表名2 on 表名1.字段名 = 表名2.字段名。select 字段名。原创 2024-06-03 21:46:06 · 580 阅读 · 0 评论 -
SQL进阶day9————聚合与分组
我的错误代码:截断平均值是有专门的函数吗?我的思路改正:用 (全部值 - 最大值 - 最小值) / (总数-2) ,但是标准正确代码:使用in子句将最大值和最小值排除掉,再求平均值with...as句式with...as句式unionQ:为什么这里where换成and也不报错,因为前面有on?那么where和on有啥区别呢,可以只有一个吗?A:(1)where和having是在临时表生产之后,对临时表中的数据进行过滤用的。原创 2024-06-03 21:13:38 · 1304 阅读 · 0 评论 -
SQL刷题笔记day8——SQL进阶——表与索引操作
我的答案复盘:有了主键就不用写not nul了。原创 2024-06-02 22:25:42 · 510 阅读 · 0 评论 -
SQL刷题笔记day7——SQL进阶——增删改操作
我的代码:insert into table(col1, col2,...,coln) values (value1, value2,...,valuen)时间差函数:timestampdiff,如计算差多少分钟,timestampdiff(minute,时间1,时间2),是时间2-时间1。否则的话,replace into 会直接插入数据,这将导致表中出现重复的数据。复盘:table后面对应最好也要写上列字段名,否则和默认的对应不上就要报错,values中类型要正确,''要正确使用。原创 2024-05-30 19:52:00 · 1023 阅读 · 0 评论 -
SQL刷题笔记day7——SQL必知必会
我的代码:group by 分组其他方法: distinct 搜索去重:select distinct [列名1,列名2,...] from [表名]原创 2024-05-30 16:03:04 · 1229 阅读 · 0 评论 -
SQL刷题笔记day6——转战LeetCode
我的代码不满足示例2的情况:如果没有第 2 高的薪资,即表里可能只有一条记录,这个解答会被评测为 'Wrong Answer'。为了克服这个问题,我们可以将其作为临时表。方法2:使用IFNULL和LIMIT子句。原创 2024-05-29 15:32:05 · 601 阅读 · 0 评论 -
SQL刷题笔记day5
正确代码我的代码改正复盘:难点是找非manager员工,涉及not in的用法, not in后面是个范围,而不是dept_manager.dept_no这个某个值。原创 2024-05-28 21:58:34 · 745 阅读 · 0 评论 -
SQL刷题笔记day4补
复盘:没有搞懂啥事1-N排序,而且这个平台的SQLite数据库连很多排名函数都不支持,这种就主要是连逻辑了,代码可能还是要去其他平台练习。在salaries表里面有多少条记录,所以应该按照部门分组,而不是按照salaries表里面的员工号分组,因为不是看每个员工有几条薪资记录。复盘:大佬用的自连接,当前最新的在职员工薪资 — 这个员工入职时的薪资=薪资涨幅。复盘:3个表,先要将两个关于部门的表连接起来,利用。其他方法代码:同时连接3个表,不用子查询。正确代码:感觉这个代码和我逻辑是一样的。原创 2024-05-28 13:37:34 · 398 阅读 · 0 评论 -
SQL刷题笔记day2
复盘:题目马虎了,题目说如果员工本身是经理的话则不显示,即要加一个where dept_emp.emp_no!复盘:问题关键是求得每个部门的最大薪水,并和员工对应,这样才能找到对应部门对应薪水的员工号,可以使用联合条件,同时找出部门号和最大薪水,然后通过表连接找到该部门(该最大薪水)对应的员工号即可。复盘:我的思路是对的,非领导员工,就用not in,但是格式错误,not in后面应该接不含null的数据集,而不是属性名,这里要用select返回。(感冒了头有点痛,明天再来吧,追剧去了 追剧可缓解头痛)原创 2024-05-24 20:33:44 · 284 阅读 · 0 评论 -
Python-温故知新
shift键+右键——打开powershell窗口——输入jupyter notebook。安装好anaconda后,在需要打开notebook的文件夹中,光标放在函数上——shift键+tab。原创 2024-05-23 19:00:39 · 457 阅读 · 0 评论 -
SQL刷题笔记day1
复盘:因为按照入职日期排列,都不一定只有一个,所以要用distinct按照hire_date进行去重分组,这样才能保证取到的是倒数第三个日期,而不仅仅是倒数第三个记录。原创 2024-05-23 18:58:52 · 613 阅读 · 0 评论 -
Excel实用技巧持续学习
环形图不可以,但是可以中间手动加上白色圆形,将饼图变为圆环。想让饼图排序,就先让可视化的数据排序就好了。2、饼图可以统一设置数据标签在图外面!3、饼图和环形图最好进行排序!4、数据透视表中的两种筛选方式。①如城市:右键——添加为切片器。②如战区:将属性直接拖至筛选区。原创 2024-05-11 15:12:42 · 348 阅读 · 0 评论 -
SQL子查询练习
● 【题目2】查询人口数(population)超过加拿大(Canada)但是少于Argentina的国家,结果显示这些国家名(name)和人口数(population)● 【题目4】查找每个大陆(continent)中最大的国家(按区域area),显示该大洲(continent),国家名(name)和面积(area).注意——between…查询的是:大洲(continent),国家名(name)和面积(area)(1)查询大洲、其国家名(name)和人口(population)原创 2024-05-10 12:54:44 · 425 阅读 · 0 评论 -
SQL高级语句
【例题29】查询每一年S14000021选区中所有候选人所在的团体(party)和得票数(votes),并对每一年中的所有候选人根据选票数的高低赋予名次,选票数最高则为1,第二名则为2,后续以此类推,最后根据团体(party)和年份(yr)排序。昨天截至时间累计确诊人数、——,lag(confirmed,1)over(partition by name order by whn),当前行往上取1行,再取这一行的confirmed的值,(1)查询国家名,确诊人数,确诊人数排名,死亡人数,死亡人数排名,原创 2024-05-09 18:02:16 · 1587 阅读 · 1 评论 -
继续SQL
● 例如:datediff('2021-06-08','2021-06-01')返回7,datediff('2021-06-08 23:59:59','2021-06-01 21:00:00')返回7,datediff('2021-06-01','2021-06-08')返回-7。● 例如:year('2021-08-03')返回2021,month('2021-08-03')返回8,day('2021-08-03')返回3。原创 2024-05-09 13:06:06 · 553 阅读 · 0 评论 -
学SQL啦
● 【例题15】查询国家名中含有三个a且面积大于60万(600000)的国家及其面积,或者人口大于13亿(1300000000)且面积大于500万(5000000)的国家及其面积。分析:order by后面加入判断subject in ('physics','chemistry'),如果subject在括号中记为1否则为0,以此将特殊值排在后面。● 【例题24】查询每个大洲(continent)和大洲内的国家(name)数量。● 【例题19】查询人口数第1到第3的国家和人口(结果同上)原创 2024-05-08 16:27:31 · 1096 阅读 · 0 评论 -
Excel利用数据透视表将二维数据转换为一维数据(便于后面的可视化分析)
1、在原来的数据上插入数据透视表:不可合并的属性在“行”,要进行合并的属性在“值”二维数据:行属性或列属性是可以继续合并的,如下数据中行属性可以合并为【月份】4、先将数据全选后粘贴为数字,再Ctrl+T生产超级表可以选择格式。一维数据:属性值都不可合并,属性值一般在第一列或第一行。2、然后将产生的“数值”也拉入“行”中(不然还是二维的)5、将多余文字利用【替换】全部删除掉。原创 2024-05-06 21:34:51 · 165 阅读 · 0 评论 -
某站戴师兄——Excel实战
sumifs(目标区域,条件区域1,条件1,条件区域2,条件2)match(1、查找项,2、查找区域,3、0精确匹配)3、条件格式规则设置:(可以设置多条规则产生叠加效果)1、设置下拉选项:数据——数据验证——设置。index(区域,0,列号)返回列。sumif(条件区域,条件,原创 2024-05-06 21:03:54 · 252 阅读 · 0 评论 -
某站戴师兄——Excel学习笔记
00:00-24:00内相同的客户端只被计算一次。即页面浏览量或点击量,用户每1次对网站中的每个网页访问均被记录1个PV。用户对同一页面的多次访问,=VLOOKUP(1、要查找的东西,2、查找区域,3、返回的在前面区域的第几列,4、0精确匹配)=If(1条件,2A,3B),A和B都可以嵌套。“a”&"*"表示a后跟着任意不定数量的字符。1、拿到源数据第一件事——备份工作表,隐藏。,条件区域1,条件1,条件区域2,条件2)每个月的最后一天 = 下个月的第一天-1。=match(1、查找项,2、查找。原创 2024-05-05 22:05:07 · 199 阅读 · 0 评论