<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[PersephoneSu]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/qq_34019697</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; qq_34019697]]></copyright><item><title><![CDATA[ODPS SQL 优化函数]]></title><link>https://blog.youkuaiyun.com/qq_34019697/article/details/127108457</link><guid>https://blog.youkuaiyun.com/qq_34019697/article/details/127108457</guid><author>qq_34019697</author><pubDate>Thu, 29 Sep 2022 15:56:15 +0800</pubDate><description><![CDATA[111]]></description><category></category></item><item><title><![CDATA[【SQL】order by自定义排序，指定排序，复杂排序]]></title><link>https://blog.youkuaiyun.com/qq_34019697/article/details/119384846</link><guid>https://blog.youkuaiyun.com/qq_34019697/article/details/119384846</guid><author>qq_34019697</author><pubDate>Wed, 04 Aug 2021 15:23:42 +0800</pubDate><description><![CDATA[写代码前的知识准备：

sql执行顺序：from→where→group by→having→select→order by→limit
group by的字段必须出现在select字段中，order by可以不必出现在select字段中且可以使用别名，为排序时减少一层select嵌套提供基础

目标排序：香蕉&gt;苹果&gt;橘子
select type,sales
from T
order by CASE when type = '香蕉' then '1'
			  when type = '苹果' ]]></description><category></category></item><item><title><![CDATA[【笔记】模型&数据挖掘基础知识-思维导图-持续更新]]></title><link>https://blog.youkuaiyun.com/qq_34019697/article/details/119384360</link><guid>https://blog.youkuaiyun.com/qq_34019697/article/details/119384360</guid><author>qq_34019697</author><pubDate>Wed, 04 Aug 2021 15:00:15 +0800</pubDate><description><![CDATA[]]></description><category></category></item><item><title><![CDATA[【笔记】数据分析业务技能-思维导图-持续更新]]></title><link>https://blog.youkuaiyun.com/qq_34019697/article/details/119383804</link><guid>https://blog.youkuaiyun.com/qq_34019697/article/details/119383804</guid><author>qq_34019697</author><pubDate>Wed, 04 Aug 2021 14:42:41 +0800</pubDate><description><![CDATA[]]></description><category></category></item><item><title><![CDATA[【笔记】统计学知识基础框架-思维导图-持续更新]]></title><link>https://blog.youkuaiyun.com/qq_34019697/article/details/118740173</link><guid>https://blog.youkuaiyun.com/qq_34019697/article/details/118740173</guid><author>qq_34019697</author><pubDate>Wed, 14 Jul 2021 23:41:46 +0800</pubDate><description><![CDATA[]]></description><category></category></item><item><title><![CDATA[【SQL】为什么中位数sql提取可以考核多种知识点用法，row_number() over()，sum(case when ...end)]]></title><link>https://blog.youkuaiyun.com/qq_34019697/article/details/118633518</link><guid>https://blog.youkuaiyun.com/qq_34019697/article/details/118633518</guid><author>qq_34019697</author><pubDate>Sat, 10 Jul 2021 12:40:55 +0800</pubDate><description><![CDATA[这道题在面试中出现频次较高，因为一道题既可以考核case when 用法，也可以考核窗口函数用法，还可以考核聚合函数用法，一举三得，完成这道题需要有清晰的思路，对题目的理解。
首先，理解中位数的概念：是按顺序排列的一组数据中居于中间位置的数。
奇数情况：由低到高排序，取中间那个值。
偶数情况：由低到高排序，取最中间的两个数值的平均数。
因此sql写法要一次性考虑到两种情况，完整代码如下：
select sum(case when flag1=flag2 then num else null end) num]]></description><category></category></item><item><title><![CDATA[【SQL】用户连续登录天数、窗口函数]]></title><link>https://blog.youkuaiyun.com/qq_34019697/article/details/118330859</link><guid>https://blog.youkuaiyun.com/qq_34019697/article/details/118330859</guid><author>qq_34019697</author><pubDate>Tue, 29 Jun 2021 11:37:01 +0800</pubDate><description><![CDATA[select user,count(1) cn
from(select a.*,date_sub(date,rn) flag
from (select user,date,row_number() over(partition by user order by date) rn
from test) a ) a 
group by user,flag

结果：

讨论：
窗口函数排序
select user,date,row_number() over(partition by user order by.]]></description><category></category></item><item><title><![CDATA[【Python】数据分析 聚类分析-RFM模型-KMeans聚类]]></title><link>https://blog.youkuaiyun.com/qq_34019697/article/details/118219924</link><guid>https://blog.youkuaiyun.com/qq_34019697/article/details/118219924</guid><author>qq_34019697</author><pubDate>Sun, 27 Jun 2021 17:06:10 +0800</pubDate><description><![CDATA[KMeans聚类：
中心思想是不断调整中心点来计算聚类，生成新的中心点，直到达到平衡为止。
随机选取K个中心点，计算其他点到中心点的位置，并选择最近的归类，重复该过程，直到中心点不再变化。服从高斯（正态）分布。
优点：

只有需要调整一个参数，操作简单，


...]]></description><category></category></item><item><title><![CDATA[【SQL】sql 多行变一行，一行变多行，行转列，列转行，lateral view explode split，collect_set/collect_list]]></title><link>https://blog.youkuaiyun.com/qq_34019697/article/details/118097270</link><guid>https://blog.youkuaiyun.com/qq_34019697/article/details/118097270</guid><author>qq_34019697</author><pubDate>Tue, 22 Jun 2021 00:08:45 +0800</pubDate><description><![CDATA[一行变多行，行转列
一行原数据：
orderid   clientname
123		  linda,lily,bob
345       apple,july,cici

一行拆成多行：
-- LATERAL VIEW explode 要放置于from之后，where之前

select distinct orderid,clientname
            from table
            LATERAL VIEW explode (split(clientname,',')) t ]]></description><category></category></item><item><title><![CDATA[【SQL】hive中不支持in/not in(select...) 子查询怎么办，包含/不包含关系]]></title><link>https://blog.youkuaiyun.com/qq_34019697/article/details/118096999</link><guid>https://blog.youkuaiyun.com/qq_34019697/article/details/118096999</guid><author>qq_34019697</author><pubDate>Mon, 21 Jun 2021 23:36:05 +0800</pubDate><description><![CDATA[A表中不包含B表中的数据
原代码
select *
from class_a
where age not in (select age
					from class_b
					where city = 'shanghai' )

left join改写：
select *
from class_a a
left join (elect age
					from class_b
					where city = 'shanghai') b on a.age = b.age
where b.age i]]></description><category></category></item><item><title><![CDATA[【SQL】用一条SQL语句进行不同条件统计，多条件聚合，case when ,if，sum()，count()]]></title><link>https://blog.youkuaiyun.com/qq_34019697/article/details/118096576</link><guid>https://blog.youkuaiyun.com/qq_34019697/article/details/118096576</guid><author>qq_34019697</author><pubDate>Mon, 21 Jun 2021 23:13:18 +0800</pubDate><description><![CDATA[通过select子句进行条件分支，效率高于使用where子句
表
table
 city    orderid       sex
 北京   2984798665      男
 上海   7658545679      女
 ...    ...            ...

通过订单号统计各城市的男女性销量
方法1：sum()函数聚合，此类可能会遇到没有去重问题
 select city
  ,sum(case when sex = '男' then '1' else '0' end) as cnt]]></description><category></category></item><item><title><![CDATA[【SQL】case表达式，注意事项，case when用法]]></title><link>https://blog.youkuaiyun.com/qq_34019697/article/details/118069322</link><guid>https://blog.youkuaiyun.com/qq_34019697/article/details/118069322</guid><author>qq_34019697</author><pubDate>Sun, 20 Jun 2021 14:16:38 +0800</pubDate><description><![CDATA[简单CASE表达式
CASE sex 
	WHEN '1' THEN '男'
	WHEN '2' THEN '女'
ELSE '其他' END 

搜索CASE表达式
CASE WHEN sex = '1' THEN '男'
		   WHEN sex ='2' THEN '女'
ELSE '其他' END 

伪代码：
如果性别等于1那么修改为男
如果性别等于2那么修改为女
否则修改为其他
结束
注意事项：

如果发现when子句为真的时候，case表达式的真假判断就会终止，而剩下的when子句就会被忽略]]></description><category></category></item><item><title><![CDATA[【SQL】Spark HiveSQL常见报错]]></title><link>https://blog.youkuaiyun.com/qq_34019697/article/details/117959724</link><guid>https://blog.youkuaiyun.com/qq_34019697/article/details/117959724</guid><author>qq_34019697</author><pubDate>Wed, 16 Jun 2021 16:24:49 +0800</pubDate><description><![CDATA[-- 无权限更新
Authorization failed:No privilege 'Update' found for outputs

-- 库或表对象不存在
com.microsoft.sqlserver.jdbc.SQLServerException: Invalid object name

-- 列数或类型不一致，无法插入表
Cannot insert into target table because column number/types are different

-- 表无分区
FA]]></description><category></category></item><item><title><![CDATA[【SQL】sql 计算时间差，单位为秒]]></title><link>https://blog.youkuaiyun.com/qq_34019697/article/details/117750838</link><guid>https://blog.youkuaiyun.com/qq_34019697/article/details/117750838</guid><author>qq_34019697</author><pubDate>Wed, 09 Jun 2021 17:49:33 +0800</pubDate><description><![CDATA[将时间转换成时间戳格式，直接相减，得出的结果以秒为单位
UNIX_TIMESTAMP(orderdate)-UNIX_TIMESTAMP(orderdate) &lt;= 86400  

– 时间相差24小时内

]]></description><category></category></item><item><title><![CDATA[【Python】 Pandas数据分析——导入数据EXCEL]]></title><link>https://blog.youkuaiyun.com/qq_34019697/article/details/117667832</link><guid>https://blog.youkuaiyun.com/qq_34019697/article/details/117667832</guid><author>qq_34019697</author><pubDate>Mon, 07 Jun 2021 17:10:20 +0800</pubDate><description><![CDATA[读取excel文件
设置列对齐
pd.set_option('display.unicode.ambiguous_as_wide',True)
pd.set_option('display.unicode.east_asian_width',True)

读取工号、姓名、部门、交易额这4列数据，使用默认索引
（注意样本路径的反斜杠哦）
df = pd.read_excel('C:/Users/Susu/Desktop/样本.xlsx',
usecols=['工号','姓名','部门','交易额'])

输出]]></description><category></category></item><item><title><![CDATA[【SQL】spark sql 判断星期几 周六周日 平日 周末]]></title><link>https://blog.youkuaiyun.com/qq_34019697/article/details/116704418</link><guid>https://blog.youkuaiyun.com/qq_34019697/article/details/116704418</guid><author>qq_34019697</author><pubDate>Wed, 12 May 2021 13:25:57 +0800</pubDate><description><![CDATA[看了别的文章，hive判断星级几的sql比较复杂，这里写一个用正则表达比较简单的,但是需要spark引擎执行
select if(date_format(date,"u") between '1' and '5','平日','周末')

select date_format('2021-05-12',"u")
&gt;&gt;3


...]]></description><category></category></item><item><title><![CDATA[【SQL】hive 设置变量 临时修改日期 动态改变日期]]></title><link>https://blog.youkuaiyun.com/qq_34019697/article/details/116699217</link><guid>https://blog.youkuaiyun.com/qq_34019697/article/details/116699217</guid><author>qq_34019697</author><pubDate>Wed, 12 May 2021 10:56:09 +0800</pubDate><description><![CDATA[在做hive代码分析时，会经常遇到改变参数的情况，例如经常需要修改特殊日期，不同时间需要看不同时间段的数据，如果修改的地方较多，工作量就比较大且容易出错，用变量参数可以提高效率。
只需要修改set中的日期值，而不用改动select代码
set startday = ‘2021-04-22’;
set endday = ‘2021-05-05’;
select *
from table
where to_date(orderdate) between ${hiveconf:startday} and ${hi]]></description><category></category></item><item><title><![CDATA[【SQL】sql 总计、小计，汇总中的所有组合；关于rollup/cube/grouping sets/grouping全总结]]></title><link>https://blog.youkuaiyun.com/qq_34019697/article/details/114850052</link><guid>https://blog.youkuaiyun.com/qq_34019697/article/details/114850052</guid><author>qq_34019697</author><pubDate>Mon, 22 Mar 2021 15:03:38 +0800</pubDate><description><![CDATA[数据分析中常常需要各种不同维度的汇总，下面介绍如何让sql像excel透视表一样汇总，可以节省不少行行代码
使用条件：必须使用group by
优化：汇总行会出现null值表示汇总，需要用到grouping一步定义null值
三种汇总区别：

...]]></description><category></category></item><item><title><![CDATA[【SQL】定位连续区间，定位连续区间的开始值和结束值，最大值和最小值]]></title><link>https://blog.youkuaiyun.com/qq_34019697/article/details/114578668</link><guid>https://blog.youkuaiyun.com/qq_34019697/article/details/114578668</guid><author>qq_34019697</author><pubDate>Mon, 15 Mar 2021 18:39:45 +0800</pubDate><description><![CDATA[SQL经典问题:找出连续日期及连续的天数，不同连续时间段最大时间，最小时间等。
工作时有些系统不支持 in、exists 等子查询，不支持笛卡尔积，这时用窗口函数会比较容易解决。
主要用到的窗口函数：sum() over( order by …);lag() over( order by …)
let’s do it
案例：有一组数据，第一列是酒店类型A/B，第二列是操作时间，怎么取出不同酒店类型不同时间段的最大、最小操作时间？

...]]></description><category></category></item><item><title><![CDATA[【R】R语言-导入EXCEL数据]]></title><link>https://blog.youkuaiyun.com/qq_34019697/article/details/114367859</link><guid>https://blog.youkuaiyun.com/qq_34019697/article/details/114367859</guid><author>qq_34019697</author><pubDate>Thu, 04 Mar 2021 14:38:04 +0800</pubDate><description><![CDATA[library(xlsx)
data &lt;- read.xlsx(“C:\\Users\\Susu\\Documents\\画图.xlsx”,sheetName = “Sheet1”,encoding = “UTF-8”)
#输入路径时，要注意反斜杠
#文件太大时，可能会报错，报错如下：
Error in .jcall(“RJavaTools”, “Ljava/lang/Object;”, “invokeMethod”, cl,  :
java.lang.OutOfMemoryError: Java .]]></description><category></category></item></channel></rss>