![](https://img-blog.csdnimg.cn/20200625114515621.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
SQL
SQL必知必会
南湖渔歌
勤奋、乐观、皮实、自省
展开
-
Mysql构造临时维度表
解决方案:构建双维度。原创 2024-01-29 15:00:11 · 519 阅读 · 0 评论 -
定义类:通过python连接MySQL数据库获取数据
【代码】定义类:通过python连接MySQL数据库获取数据。原创 2023-02-24 17:34:05 · 153 阅读 · 0 评论 -
Hive sql分组函数grouping sets
【代码】Hive sql分组函数grouping sets。原创 2022-11-19 17:47:31 · 791 阅读 · 0 评论 -
AB球队得分流水表,得到连续三次得分的队员名字 和每次赶超对手的球员名字(pdd)
AB球队得分流水表,得到连续三次得分的队员名字 和每次赶超对手的球员名字(pdd)原创 2022-07-22 18:13:57 · 572 阅读 · 1 评论 -
Python操作MySql写入多张表到数据库
Python操作MySql写入多张表到数据库。原创 2022-07-21 17:45:06 · 689 阅读 · 0 评论 -
【pdd面试】分析手机中的应用(相机)的活跃情况
大厂SQL面试题 sql 数据分析原创 2022-07-20 11:19:34 · 90 阅读 · 0 评论 -
【sql面试题】求连续点击三次的用户数,而且中间不能有别人的点击
无摘要原创 2022-07-13 17:03:48 · 531 阅读 · 0 评论 -
【MySql】创建MySql账户并授权的正确姿势
无摘要原创 2022-07-13 11:15:59 · 151 阅读 · 0 评论 -
sql计算每日新增用户、及留存率指标
无摘要原创 2022-06-22 10:41:15 · 1614 阅读 · 0 评论 -
找出连续7天登陆,连续30天登陆的用户
无摘要原创 2022-06-21 18:03:04 · 352 阅读 · 0 评论 -
sql面试题:求连续最大登录天数
无摘要原创 2022-06-21 17:57:33 · 792 阅读 · 0 评论 -
展示用sql创建中间数据表的实际工作用例
无摘要原创 2022-06-21 15:44:48 · 779 阅读 · 0 评论 -
G 双轴图sql脚本
无摘要原创 2022-06-17 18:28:16 · 141 阅读 · 0 评论 -
月环比sql实现
无摘要原创 2022-06-15 16:55:24 · 209 阅读 · 0 评论 -
带你手把手实现grafana双轴图
无摘要原创 2022-06-15 14:10:35 · 1556 阅读 · 0 评论 -
Mysql安装及部署
#3.1、添加yum包wget https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm# 3.2、安装Mysql源yum localinstall mysql80-community-release-el7-1.noarch.rpm# 3.3 检查Mysql源是否安装成功yum repolist enabled | grep "mysql.*-community.*"# 3.4、安装Mysqlyum inst原创 2022-05-05 08:38:01 · 757 阅读 · 0 评论 -
通过Navicate for MySQL导入SQL文件
场景:今天打算导入一个.sql 格式的外部数据文件,本来想通过在navicate界面打开.sql文件,运行将数据导入,但navicate一直出现卡段,推断该文件的数据量打开,软件打开非常吃力。后面通过搜索,尝试了下面的方法数据轻松得以导入:1.在左侧导航栏,右键单击已连接的主机数据库名,然后单击打开数据库2.在左侧导航栏,右键单击主机数据库名,然后单击运行SQL文件3.在弹出的运行SQL文件对话框,选择待导入的sql文件,选中遇到错误时继续复选框、在每个运行中运行多个查询复选框和SET AUT原创 2022-05-04 18:27:11 · 2220 阅读 · 0 评论 -
以sql脚本计算电商零售中的每月新老客户占比情况
-- 数据预览:select * from fct_sales limit 10;-- 每月的新客户占比:select first_month as m_month ,count(dimMemberID) AS user_cnt ,sum(if(is_new = 1,1,0)) as new_user_num ,sum(if(is_new = 1,1,0)) / count(dimMemberID) as new_rate ,sum(if(is_new =原创 2021-11-19 12:02:57 · 2048 阅读 · 0 评论 -
0907 | 取数需求的封装(MySQL存储过程参数)
# ------------------------------- 创建存储过程 ----------------------------------------use `zbj`; -- 进入直播间数据库DROP procedure IF EXISTS `Get_Log_allUser`;DELIMITER $$USE `zbj` $$CREATE PROCEDURE Get_Log_allUser(IN date1 VARCHAR(20), in date2 VARCHAR(20), i原创 2021-09-07 16:49:20 · 99 阅读 · 0 评论 -
20210830 | sql 封装的简单示例
将常用的sql 封装在存储过程中,简单调用即可,不需要每次复制sql再执行;drop procedure if EXISTS p_db_info;delimiter;;create PROCEDURE p_db_info(in db varchar(10))begin IF db != '' then select count(DISTINCT table_name) as tcnt ,sum(table_rows) as rcnt from information原创 2021-08-30 15:46:28 · 277 阅读 · 0 评论 -
20210830 | 实用sql应用案例
-- 用户日志次数top榜单SELECT concat('第',@row_num:= @row_num + 1,'名') as rank ,user_id,cnt from(SELECT user_id ,count(1) as cnt from mid_eve_wkb_user_log group by user_id order by cnt desc) a-- 用户日志次数top榜单,先构造次数统计表a,再构造变量@row_num并初始值为0,(SELEC原创 2021-08-30 15:12:19 · 191 阅读 · 0 评论 -
20210823 |sql语句生成一张从2019年1月1日至今日的日期表
-- 请用sql语句生成一张从2019年1月1日至今日的日期表# 建表drop table if exists dim_date_df;create table dim_date_df( date date, `year` int(10), `month` int(10), `day` int(10), `quarter` int(10), `day_name` VA.原创 2021-08-23 16:04:19 · 716 阅读 · 0 评论 -
创建存储过程的一个错误示范
– 生成一张从2019年1月1日至今日的日期表# 建表drop table if exists dim_date_df;create table dim_date_df( date date, `year` int(10), `month` int(10), `day` int(10), `quarter` int(10), `day_name` VARCHAR(20),原创 2021-08-23 15:34:57 · 94 阅读 · 0 评论 -
dayofweek vs weekday()
WEEKDAY(date)Note: 0 = Monday, 1 = Tuesday, 2 = Wednesday, 3 = Thursday, 4 = Friday, 5 = Saturday, 6 = Sunday.点评:+1,适合中国习惯DAYOFWEEK(date)The DAYOFWEEK() function returns the weekday index for a given date (a number from 1 to 7).Note: 1=Sunday, 2=Monda原创 2021-08-23 15:16:19 · 259 阅读 · 0 评论 -
20210821 | 利用存储过程生成日期维度表
本文主要记录在BI和数据分析过程中碰到的生成时间维度的问题,另外也是一个mysql的存储过程基础示例;包含:存储过程基本语法、变量定义、while循环、异常处理以下存储过程生成了以当前日期为基准[前后3650天]的日期记录sql如下:#---------------------------------------------------- 创建日期维度表 --------------------------------------------CREATE TABLE `dim_date` (原创 2021-08-21 20:40:53 · 755 阅读 · 0 评论 -
20210802 | 数据加工:MySql不同时间粒度下的分组统计
# 我们在做项目或者数据分析时,经常遇到这样的需求:统计不同时间粒度下的数据分布情况-- 按照不同时间粒度进行分组统计-- 按天SELECT date(`下单日期时间`) as date1 ,count(1) as num from ordersgroup by date(`下单日期时间`)order by date1 asc;-- 按照每小时SELECT date_format(`下单日期时间`,'%Y-%m-%d %H:00:00') as date2原创 2021-08-02 01:21:27 · 261 阅读 · 0 评论 -
SQL面试题变式:求出每个会员,最早一次购买对应的订单号
step1:select dimMemberID ,dimDateID ,salesNo ,min(dimDateID)over(partition by dimMemberID) as min_login_time ,row_number()over(partition by dimMemberID order by dimDateID asc) as ranking fr原创 2021-04-15 01:02:51 · 980 阅读 · 0 评论 -
SQL中的cast()函数—— 数字类型转日期类型
SQL中的cast()函数:CAST函数用于将某种数据类型的表达式显式转换为另一种数据类型。CAST()函数的参数是一个表达式,它包括用AS关键字分隔的源值和目标数据类型。语法:CAST (expression AS data_type)expression:任何有效的SQServer表达式。AS:用于分隔两个参数,在AS之前的是要处理的数据,在AS之后是要转换的数据类型。data_type:目标系统所提供的数据类型;select dimDateID ,DATE_FORMAT(di原创 2020-07-31 14:38:42 · 16856 阅读 · 0 评论 -
concat函数,concat_ws函数,concat_group函数之间的区别
直接上干货:– 建表操作:-- 建表CREATE table 成绩表1(学号 VARCHAR(10),科目 VARCHAR(10),成绩 INTEGER)– 插入数据:INSERT into `成绩表` values -- 插入数据('001','计算机',99),('003','数学',99),('001','数学',99),('001','化学',88),('002','英语',96),('003','语文',76);SELECT * from 成绩表; -- 预览原创 2020-07-13 14:45:32 · 728 阅读 · 0 评论 -
查询中on筛选与where筛选的区别在哪里?
– 建表:maincreate table mainas SELECT *from (SELECT 1 as id,"张三" as name,'男' as gender,20 as ageunion SELECT 2 as id,"李四" as name,'男' as gender,21 as ageunion SELECT 3 as id,"王五" as name,'男' as gender,22 as ageunion SELECT 4 as id,"翠花" as name,'女' as原创 2020-07-12 15:12:12 · 147 阅读 · 0 评论 -
4道SQL题 | 快速入门数据分析师面试
根据下面的例表编写SQL查询语句:表名:order表名:product表名:store1.查找符合下列要求的产品,并按照产品价格降序排列:CategoryA 且颜色为yellow,或者Weight大于5;参考代码:select * from productwhere Category = 'CategoryA' and (Color = 'Yellow' OR weight > 5)order by Price 2.请计算每一位客人的总购买金额(Amount),总购买原创 2020-07-01 10:06:25 · 327 阅读 · 0 评论 -
sql实战:使用sql计算工资涨幅?
“雇员表“中记录了员工的信息,“薪水表“中记录了对应员工发放的薪水。两表通过“雇员编号”关联。查找当前所有雇员入职以来的薪水涨幅,给出雇员编号以及其对应的薪水涨幅,并按照薪水涨幅进行升序。(注:薪水表中结束日期为2004-01-01的才是当前员工,否则是已离职员工)-- 入职薪水select a.雇员编号 ,薪水 as last_salaryfrom 雇员表 a inner join 薪水表 bon a.雇员编号 = b.雇员编号where 雇用日期 = 起始日期 and原创 2020-06-29 16:40:00 · 2050 阅读 · 0 评论 -
MySql学习笔记 —— 善用Limit
-- 查找7月份第二周订单数最多的会员的消费记录-- 返回字段: 会员的消费记录-- 筛选条件: 第二周 & 订单数最多-- 关键语句:where COUNT LIMIT GROUP BY;-- 临表子查询SELECT * FROM dw.fct_sales limit 3WHERE dimMemberID<>0 AND dimMemberID IN(SEL...原创 2020-06-25 11:44:00 · 158 阅读 · 0 评论 -
分析函数 —— Avg移动开窗的一些思考和探索
导火索:求出的是移动平均:select t2.* ,avg(t2.amt)over(partition by dimShopID order by amt desc) as a1from (select t1.dimShopID ,t1.dimDateID ,sum(AMT) as amtfrom dw.fct_sales t1where dimDateID between 20170801 and 20170810group by t1.dimShopID原创 2020-06-25 11:22:45 · 289 阅读 · 0 评论 -
两个SQL时间戳函数介绍
/* * FROM_UNIXTIME(unix_timestamp)是MySQL里的时间函数。* UNIX_TIMESTAMP() 是与之相对正好相反的时间函数 。*/ select unix_timestamp('2017-01-01',);-- 输出:1,483,200,000select from_unixtime(1483200000); -- 输出:2017-01-01 00:00:00.0 select from_unixtime(1483200000,'%Y-%m-%原创 2020-06-02 14:19:05 · 952 阅读 · 1 评论 -
leetcode题175 —— 组合两个表
表1: Person+-------------+---------+| 列名 | 类型 |+-------------+---------+| PersonId | int || FirstName | varchar || LastName | varchar |+-------------+---------+PersonId 是上表主键表2: Address+-------------+---------+| 列名原创 2020-06-01 23:31:12 · 112 阅读 · 0 评论 -
SQL 函数 —— TRUNCATE详解示例
TRUNCATE(X,D)X 表示需要处理的数字,D 表示需要截取的位数。如果 D 为零,则返回的数字不含小数。D 也可以是负数,这样会把整数的部分置零。示例如下:mysql> SELECT TRUNCATE(1.223,1);-> 1.2mysql> SELECT TRUNCATE(1.999,1);-> 1.9mysql> SELECT TRUNCATE(1.999,0);-> 1mysql> SELECT TRUNCATE(-1.999,1)原创 2020-05-30 17:25:50 · 5860 阅读 · 0 评论 -
用sql将日期转换成具体的周几维度,我建议…
如果你想用sql将日期转换成具体的"周几"维度,我建议直接使用这两个函数就好了方式一:-- 在这里,0代表周天,1-6 依次代表周一到周六SELECT DATE_FORMAT('2020-05-23','%w'); -- 输出:6;周六?SELECT DATE_FORMAT('2020-05-24','%w'); -- 输出:0;周天?SELECT DATE_FORMAT('2020-05-25','%w'); -- 输出:1;周一?SELECT DATE_FORMAT('2020-05-26原创 2020-05-28 10:21:32 · 5430 阅读 · 0 评论 -
分析(窗口)函数:NTH_VALUE
NTH_VALUE 返回 analytic_clause 定义的窗口中第 n 行的 measure_expr 值。返回的值具有 measure_expr 的数据类型。NTH_VALUE (measure_expr, n) [ FROM { FIRST | LAST } ][ { RESPECT | IGNORE } NULLS ] OVER (analytic_clause)参数:实操演练:-- 建表CREATE TABLE emp_msg(deptno INT, ename VARCHAR原创 2020-05-26 10:59:02 · 5279 阅读 · 0 评论 -
年度统计表案例——用sql做行列转换
表 tyear month amount1991 1 1.11991 2 1.21991 3 1.31991 4 1.41992 1 2.11992 2 2.21992 3 2.31992 4原创 2020-05-11 11:55:43 · 380 阅读 · 0 评论