![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Datawhale之MySQL
上进的菜鸟
这个作者很懒,什么都没留下…
展开
-
多个left join的疑问
测试数据a表id1-10,b表id5-12,c表id2-11目的:找到满足a表不满足b表满足c表的id(应该是2,3,4)use test;create table testtesta (id bigint);insert into testtesta values (1);insert into testtesta values (2);insert into testtes...原创 2019-12-19 13:51:23 · 967 阅读 · 0 评论 -
count(*) count(列名)count(1)
COUNT(常量)和COUNT(*)表示的是直接查询符合条件的数据库表的行数。而COUNT(列名)表示的是查询符合条件的列的值不为NULL的行数COUNT(*)相比COUNT(常量)和COUNT(列名)来讲,COUNT(*)是SQL92定义的标准统计行数的语法,因为他是标准语法,所以MySQL数据库对他进行过很多优化1、COUNT有几种用法?count(1) count(*) ...原创 2019-12-04 14:55:51 · 310 阅读 · 0 评论 -
计算新访uv次日留存率
select first_date ,count(distinct case when by_day=0 then yxuserid else null end) as day_0 ,count(distinct case when by_day=1 then yxuserid else null end) as day_1 ,count(distinct case when by_da...原创 2019-12-03 20:58:17 · 2796 阅读 · 0 评论 -
Hive日期函数
模块 Hive时间函数特别注意 要点 除了unix_timestamp/from_unixtime之外 其他函数无法识别‘年-月’形式,至少‘年-月-日’ to_date 注意to_date就是返回年-月-日,和day(‘2019-07-02’)返回02不一样 ...原创 2019-07-29 10:31:15 · 6675 阅读 · 0 评论 -
行列转换
1.变换结果集成一行create table test3 ( deptno int not null, cnt int not null );insert into test3 values (10,3);insert into test3 values (20,5);insert into test3 valu...原创 2019-07-03 11:11:31 · 1927 阅读 · 0 评论 -
sql关于avg中的else null和else 0
drop table test1;use sys;create table test1 ( id int not null, num int not null );insert into test1 values (1,10);insert into test1 values (2,20);insert into test1 values (3,3...原创 2019-07-02 09:45:09 · 1086 阅读 · 0 评论 -
关于join的笛卡尔积
就算时a和b表join+on仍然会有笛卡尔积的形式因为如果a表和b表的id都有1对多的形式时,就是笛卡尔积比如a中id=1的记录有3条(ID,维修时间),b中id=1的记录有2条(ID,用户上报时间),join,on之后就会有6条!这样之后再groupby(ID)的时候就会有问题,可能我们仅需要的时用户上报时间大与维修时间的 (因为这样才链接)的用户上报次数大于2的车辆,这...原创 2019-06-21 10:44:39 · 3930 阅读 · 0 评论 -
差集并集的各种变式(join
A left join B on a.key=b.key即使a.key为null也会显示数据,牢牢记住:会显示A的所有数据!!left join/right join/inner join/full outer join注意使用left join之类的可能会有A表有keyB表没key,所以join之后会存在一些key的有关B的数据为null的情形敲黑板!这个时候再使用whe...原创 2019-06-09 16:41:33 · 825 阅读 · 0 评论 -
共同好友
用户表,只有uid,uid_friend两列,数共同好友最多的好友,以及共同好友的数量CREATE TABLE fri ( uid INT NOT NULL, uid_friend INT NOT NULL );INSERT INTO fri VALUES (1,2);INSERT INTO fri VALUES (1,3);INSERT INT...原创 2019-06-02 11:10:06 · 254 阅读 · 0 评论 -
leetcode569 SQL中位数问题
drop table employees;Create table employees(Id int,Company varchar(2),salary int);insert into employees values(1,'A',2341);insert into employees values(2,'A',341);insert into employees values(3,'...原创 2019-05-23 08:51:25 · 646 阅读 · 1 评论 -
连续三个时间段
CREATE TABLE stadium( id INT NOT NULL, date DATE NOT NULL, people INT NOT NULL);INSERT INTO stadium VALUES(1,'2007-01-01',10);INSERT INTO stadium VALUES(...原创 2019-05-13 15:47:02 · 432 阅读 · 0 评论 -
自连接--子查询的另一种方式
CREATE TABLE cust(cust_id INT NOT NULL ,cust_name VARCHAR(50) NOT NULL,cust_concat VARCHAR(50) NOT NULL);INSERT INTO cust(cust_id,cust_name,cust_concat) VALUES (1001,'kylin','Mary');INSERT IN...原创 2019-07-24 15:29:26 · 641 阅读 · 0 评论 -
三值逻辑和null
如果not in子查询用到的表里被选择的列中存在null,sql查询结果永远为空原创 2019-10-05 09:31:16 · 201 阅读 · 0 评论 -
sql--来自各路面筋
1.pddCREATE TABLE pdd(u_id VARCHAR(20) NOT NULL,ip INT NOT NULL,timestamp datetime NOT NULL);insert into pdd values('a',124,'2019-08-07 12:09:02');insert in...原创 2019-08-23 17:33:08 · 184 阅读 · 0 评论 -
连续时间问题-sql
问题:con_table(user_id,ttime) ttime为用户登陆时间,现在需要找出来连续登陆时间天数超过3天的用户create table con_table (user_id int not null,ttime datetime not null);insert into con_table values (1,'2019-07-07 10:00:01');inse...原创 2019-08-09 11:40:17 · 714 阅读 · 3 评论 -
hive遗留问题
hive和mysql有什么不同1.不支持下列from a,b where用法SQL中对两表内联可以写成:select * from dual a,dual b where a.key = b.key;Hive中应为:select * from dual a join dual b on a.key = b.key2.不能智能识别concat(‘;’,key),只会将‘;’当做SQL结...原创 2019-08-13 17:05:22 · 497 阅读 · 0 评论 -
lag/lead
lag 和lead 可以 获取结果集中,按一定排序所排列的当前行的上下相邻若干offset 的某个行的某个列(不用结果集的自关联);lag ,lead 分别是向前,向后;lag 和lead 有三个参数,第一个参数是列名,第二个参数是偏移的offset,第三个参数是 超出记录窗口时的默认值)举例如下:SQL> select * from kkk;...转载 2019-07-25 20:28:06 · 1059 阅读 · 0 评论 -
汇总平均数/比值的坑
A城市:每天车总订单100(total_ord),一共20个车(total_vid),因此每天的车均单是5(avg_ord)B城市:每天车总订单300,一共30个车,因此每天的车均单是10在计算全国(假设只有A+B两个城市)简单的车均单加总处以2即(10+5)/2=7.5,对应sql里面avg(avg_ord)但是分开算真实的是:(100+300)/(20+30)=8,对应sql的...原创 2019-07-30 20:58:09 · 1508 阅读 · 0 评论 -
SQL 中的ORDER BY
MySQL中 IN 不能和LIMIT一起用还是上jie那个学生表,我现在想查询cid为02 的前三名学生的总成绩SELECT SUM(s_score) FROM score WHERE s_score IN (SELECT s_scoreFROM score WHERE c_id = '02' ORDER BY s_score DESC LIMIT 3);this ve...原创 2019-05-12 20:22:34 · 827 阅读 · 0 评论 -
SQLzoo练习题
20190725update20190519更新20190510更新每一場德國'GER'有參與的賽事中,列出賽事編號 matchid, 日期date 和德國的入球數字。SELECT m.matchid,mdate,m.num FROM(SELECT go.matchid,COUNT(CASE WHEN go.teamid = 'GER' THEN 1 ELSE NUL...原创 2019-04-20 09:38:53 · 461 阅读 · 0 评论 -
leetcode中等题
1.-- 第一种 别忘了DISTINCTSET @limit_n = 4;SELECT DISTINCT salary FROM Employee e1 WHERE ( SELECT COUNT(DISTINCT salary) FROM Employee e2 WHERE e2.salar...原创 2019-04-28 21:38:14 · 351 阅读 · 0 评论 -
webank之SQL题
20190427更新 着重看第二题实现分组有两种形式:1.groupby 2. where a.id=b.id1.查询与141号或174号员工的manager_id和department_id相同的其他员工的employee_id, manager_id, department_id (做对)SELECT employee_id, manager_id, department...原创 2019-04-12 11:03:00 · 277 阅读 · 0 评论 -
每日一练--MYSQL
自己创建了一个小实验CREATE TABLE appointment ( appointment_id INT NOT NULL , patient INT NOT NULL,room VARCHAR(25) NOT NULL); INSERT INTO appointment VALUES(1,101,'A');INSERT INTO appointment VALUE...原创 2019-04-05 14:49:16 · 469 阅读 · 0 评论 -
SQL需注意的问题--自连接篇
2019、05、10更新 需要重点看一下那个distinct的,其他的也要看2019/07/24更新 注意p1.name>p2.name一般只在排列组合的时候使用,见例子误区让我们看一下不加distinct的效果SELECT p1.name,p1.price FROM pro p1,pro p2WHERE p1.price = p2.price...原创 2019-03-12 21:37:25 · 608 阅读 · 2 评论 -
SQL需要注意的note--case和聚合函数篇
20190423更新:自己创建了函数查阅了经常犯的错误,要attention(在最后)---------count/sum/min/avg 等等聚合函数值作用非null,那些null自动忽略了2.sum只垂直加总(除非。。)3.min、max既可以作用非数值也可以作用数值4.count(distinct)常常联用5.case语句在group by里十分好用!6. c...原创 2019-03-12 19:38:39 · 303 阅读 · 0 评论 -
MYSQL 关于 iNNER join的一个误解
CREATE TABLE e1(id INT, price INT);INSERT INTO e1(id, price) VALUES (1, 50);INSERT INTO e1(id, price) VALUES (1, 30);INSERT INTO e1(id, price) VALUES (2, 50);INSERT INTO e1(id, pri...原创 2019-03-16 11:16:16 · 1100 阅读 · 0 评论 -
TASK6--实战2
20190522更新第一题20190427更新 着重第2题20190513更新 第二题是否 distinct第一题不会:嘤嘤嘤SELECT Request_at AS Day, FORMAT(AVG(IF(Status LIKE 'cancelled%', 1, 0)), 2) AS CancellationRate FROM Trips WHERE C...原创 2019-03-04 16:11:00 · 177 阅读 · 0 评论 -
TASK5--MySQL实战
2019427更新了第一题的详细感悟20190517更新:好好看第2题将Excel文件导入MySQL表 :Table Data Import Wizard参考:https://baijiahao.baidu.com/s?id=1572962766220128&wfr=spider&for=pcMySQL导出表到Excel文件:Table Data Export...原创 2019-03-03 11:05:04 · 239 阅读 · 0 评论 -
TASK1--数据库基础概念
数据库基础知识数据库:保存有组织的数据的容器,需使用数据库软件(DBMS)访问数据库关系型数据库:把信息分解为多个表,一类数据一个表,表之间通过某些相同的值关联起来,这种数据库称为关系型数据库表:table:某种特定类型数据的结构化清单。相同数据库中不能两次使用相同的表名,但在不同数据库可以。列:表中的一个字段。所有表都是由一个或多个列组成的。每个列都有相应的数据类型。行:表中...原创 2019-02-26 16:03:13 · 161 阅读 · 0 评论 -
TASK4--MySQL链接
20190427更新,着重看最后一个题一、MySQL别名为表取别名:查询数据时,如果表名很长,使用起来不方便,此时,就可以为表取一个别名,用这个别名来代替表的名称SELECT * FROM 表名 [AS] 别名;为字段取别名:在查询数据时,为了使显示的查询结果更加直观,可以为字段取一个别名SELECT 字段名 [AS] 别名 [,字段名 [AS] 别名,……] FROM 表名;...原创 2019-03-02 20:28:50 · 207 阅读 · 0 评论 -
TASK3---表的删除,更新,更改
一. MySQL表数据类型二. 用SQL语句创建表CREATE TABLE customers( cust_id int NOT NULL AUTO_INCREMENT, cust_name char(50) NOT NULL , cust_address char(50) NULL , cust_city char(50) ...原创 2019-03-01 10:18:08 · 328 阅读 · 0 评论 -
SQL值exist
比如在Northwind数据库中有一个查询为SELECT c.CustomerId,CompanyName FROM Customers cWHERE EXISTS(SELECT OrderID FROM Orders o WHERE o.CustomerID=c.CustomerID)这里面的EXISTS是如何运作呢?子查询返回的是OrderId字段,可是外面的查询要找的是Custom...转载 2019-04-12 15:37:16 · 153 阅读 · 0 评论 -
XC笔试SQL
20190510更新:注意一下join的形式SELECT SUM(number) FROM(SELECT v_id,COUNT(DISTINCT s_id) AS numberFROM((SELECT p.v_id,p.s_id,p.ts FROM page_view p,dim_page d WHERE d.page_id = p.page_id ...原创 2019-04-12 16:49:40 · 181 阅读 · 0 评论 -
SQL练习--某书第八章(改变数据
1.基于联结的delete2.UPDATE注意1:注意2:基于联结的update3.通过表表达式修改数据3-1:如何使用--必须使用:窗口函数练习:1.#8.1-2 从sales.customers表插入所有具有订单的客户到dbo.customers'-- 注意有订单要求 sales.customers的custid存在于Sales.O...原创 2019-04-19 09:49:03 · 563 阅读 · 0 评论 -
SQL练习--某书第七章(窗口函数
20190422更新重点在最后一题,有空看第一题重要的事情说三遍窗口函数只能自select和select顺序之后的命令中使用(orderby可以)但是where不可以窗口函数只在orderby之前,但是在join where等的后面~下面详细介绍一下sum以便于理解pv1: 分组内从起点到当前行的pv累积,如,11号的pv1=10号的pv+11号的p...原创 2019-04-19 09:27:05 · 787 阅读 · 2 评论 -
SQL练习某书第6章--UNION/INTERSECT/EXCEPT
UNION(并集)/INTERSECT(交集)/EXCEPT(差集)举个例子但需要注意!!!!!!!!!!!!!集合之间连接每个select语句中不能有orderby如果非得用那么,用表表达式实现吧练习...原创 2019-04-18 08:42:38 · 380 阅读 · 0 评论 -
子查询查缺补漏
题目来自sqlzoo的子查询题目。网址:https://sqlzoo.net/wiki/SELECT_within_SELECT_Tutorial/zh表列名含义:name:国家名称continent:该国家属于哪个洲area:面积population:人口gdp:国内5.德国(Germany)在欧洲(Europe)國家的人口最多。...原创 2019-04-18 08:03:26 · 321 阅读 · 0 评论 -
mysql日期相关函数
MySQL Str to Date (字符串转换为日期)函数:str_to_date(str, format)select str_to_date('08/09/2008', '%m/%d/%Y'); -- 2008-08-09select str_to_date('08/09/08' , '%m/%d/%y'); -- 2008-08-09MySQL (日期、天数)转换函数:to_...转载 2019-04-22 16:49:11 · 309 阅读 · 0 评论 -
SQL练习题--某书第四章子查询
20190522更新新的子查询问题20190422更新 7,8题着重看一下下面着重讲一下 相关子查询应用1:为什么说相关呢,因为两个表是有连接关系在的,比如这里注意对于O1的每一个orderid,我在O2里面保证首先orderid一样,然后寻找满足条件后的MAX (orderid)这里确定了custid之间是对应的所以这个查询是:返回每个客户最大订单ID...原创 2019-04-14 10:34:37 · 429 阅读 · 0 评论 -
SQL练习--某书第四章 表表达式
20190422更新 着重3-2有空4-2第一种:派生表(就是子查询感觉变成一个表)从这个表from或者join但是需要特别注意,派生表的orderby一点作用都没有,不能用!!!能用orderby的情况:点那个orderby和limit一起使用的时候,子表达式可以用按理说下面代码第二个方式但是确实可以,因为orderby和limit一起~~~-- cid的为02的...原创 2019-04-16 21:35:44 · 149 阅读 · 0 评论