首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Kettle构建Hadoop ETL实践(八-1):维度表技术

就是说地址列NULL变成非NULL,或者非NULL变成NULL,这种情况明显应该新增一个版本,但根据“”定义,此时返回值是NULL,查询不会返回,不符合业务需求。...该转换产品(product_category列)日期维度三个层次级别(year、quartermonth列)分组返回销售金额。 ?...图8-10 分组求和 这是一个非常简单分组查询转换,结果输出每一度量(销售订单金额)都沿着-季度-层次分组,结果如下。...但与分组查询不同是,分组查询只返回分组后最低级别、即本例中级别上度量,而钻取查询返回分组后维度每一个级别的度量。...后面是三个分组步骤,先按product_category分组,然后分别-季度、-季度-月分组,对order_amount求和,对dt求最小值,步骤分组与聚合设置如图8-12所示。

3.4K30

MySQL之数据库基本查询语句

name from Author; 查询所有列 #查询Author表所有信息 select * from Author; 查询不同(distinct去重) #查询Article表所有作者 select...5; with rollup实现在分组统计数据基础上再进行统计 #将Articleauthor进行分组,再统计每个人总文章数 select author,sum(articles) as '总文章数...#获取系统当前日期时间 --日 时:分:秒 select sysdate(); #获取系统当前日期 --日 select curdate(); #获取系统当前时间 时:分:秒 select...select type,update_date from Article where date(update_date)='2020-01-01'; #查询201911更新文章(两种写法) #写法一...FROM:要检索数据表 WHERE:级过滤 ... GROUP BY:分组说明 HAVING:组级过滤 ... ORDER BY:输出时排序 ... LIMIT:要检索行数 ...

4.8K40
您找到你想要的搜索结果了吗?
是的
没有找到

2-SQL语言中函数

# 日期函数 # NOW() 返回当前系统日期+时间 SELECT NOW(); # CURDATE() 返回当前系统日期,不包含时间 SELECT CURDATE(); # CURTIME()...返回当前系统时间,不返回日期 SELECT CURTIME(); # 获取指定部分日,等信息(小时,分钟,秒) SELECT YEAR(NOW()); SELECT MONTH('1998-...('4-3 1992','%m-%d %Y'); # DATE_FORMAT(date,format) 将日期转换成字符 SELECT DATE_FORMAT(NOW(),'%Y%m%d日--%...,就会用到连接查询 分类: 年代分类: sql92标准(仅支持内连接) sql99标准(除了全外连接外都支持)【推荐】功能分类: 内连接(包括等值连接,非等值连接,子连接) 外连接(包括左外连接,右外连接...子查询中某个值作比较,例如15>ANY(40,10,25),因为15>10所以上式成立 ALL 子查询返回所有值比较,例如15>ANY(40,10,25),因为40>15所以上式不成立 */

2.8K10

Hive常用函数案例实操

分组统计,查出各部门中男女个数: 3. 转列: 4. 列转行 5. 综合练习 6. 查询顾客购买明细及购买总额 7. 将每个顾客cost按照日期进行累加 8....查询每个顾客上次购买时间 10. lead(col,n, default_val):某一列往后第n行数据 11. ntile(n): 把数据分为n组,返回组号 12....连续两天购物的人 NVL:给空字段赋值 查出各部门中男女个数: case when 分组统计 sum(case sex when '男' then 1 else 0 end) 转列: 列转行:...固定写法,记住就行: lateral view explode(split(category,',')) tbl as cate; 综合练习: sql如下: 查询2017份购买过商品的人...lead(col,n, default_val):某一列往后第n行数据 ntile(n): 把数据分为n组,返回组号 求前20%订单数据: 配合ntile()使用 percent_rank(

90050

Pandas速查卡-Python数据科学

Josh Devlin 2017221日 Pandas可以说是数据科学最重要Python包。...('1900/1/30', periods=df.shape[0]) 添加日期索引 查看/检查数据 df.head(n) 数据框前n df.tail(n) 数据框后n df.shape() 行数列数...) 所有唯一值计数 选择 df[col] 返回一维数组col列 df[[col1, col2]] 作为新数据框返回列 s.iloc[0] 位置选择 s.loc['index_one'] 索引选择...) 将col1升序排序,然后降序排序col2 df.groupby(col) 从一列返回一组对象值 df.groupby([col1,col2]) 多列返回一组对象值 df.groupby(col1...=max) 创建一个数据透视表,col1分组并计算col2col3平均值 df.groupby(col1).agg(np.mean) 查找每个唯一col1组所有平均值 data.apply(

9.2K80

HAWQ取代传统数仓实践(十八)——层次维度

例如,示例数据仓库中日期维度就有一个四级层次:、季度、日。这些级别用date_dim表里列表示。日期维度是一个单路径层次,因为除了-季度--日这条路径外,它没有任何其它层次。...,包括在固定深度层次上进行分组钻取查询,多路径层次参差不齐层次处理等,最基本情况开始讨论。...该查询产品(product_category列)日期维度三个层次级别(year、quartermonth列)分组返回销售金额。...,结果输出每一度量(销售订单金额)都沿着-季度-层次分组。        ...因此该语句会生成产品类型、、季度、;类型、、季度;类型、年分组聚合数据

1.3K60

MySQL基础(快速复习版)

year:返回 month:返回 day:返回日 date_format:将日期转换成字符 curdate:返回当前日期 str_to_date:将字符转换成日期 curtime:返回当前时间 hour...:小时 minute:分钟 second:秒 datediff:返回两个日期相差天数 monthname:以英文形式返回 4、其他函数 version 当前数据库服务器版本 database 当前打开数据库...表1,表2,…; 笛卡尔乘积:当查询多个表时,没有添加有效连接条件,导致多个表所有实现完全连接 如何解决:添加有效连接条件 二、分类 年代分类: ​ sql92: ​ 等值 ​ 非等值 ​...having 分组筛选order by 排序列表limit 子句; 特点: ①查询结果=主表中所有,如果表和它匹配将显示匹配,如果表没有匹配则显示null ②left join 左边就是主表...M,其中M不可以省略 三、日期型 year date日期 time时间 datetime 日期+时间 8 timestamp 日期+时间 4 比较容易受时区、语法模式、版本影响,更能反映当前时区真实时间

4.5K20

SQL养成这8个好习惯是一笔财富

(5).使用HAVING子句筛选分组 (6).计算所有的表达式 (7).使用ORDER BY对结果集进行排序 二、执行顺序 1.FROM:对FROM子句中前两个表执行笛卡尔积生成虚拟表vt1 2...才被插入vt4 5.GROUP BY:GROUP BY子句中列列表对vt4中分组生成vt5 6.CUBE|ROLLUP:把超组(supergroups)插入vt6 生成vt6 7.HAVING...vt9 10.ORDER BY:将vt9order by子句中列列表排序生成一个游标vc10 11.TOP:vc10开始处选择指定数量或比例生成vt11 并返回调用者 看到这里,那么用过...三、只返回需要数据 返回数据到客户端至少需要数据库提取数据、网络传输数据、客户端接收数据以及客户端处理数据等环节,如果返回不需要数据,就会增加服务器、网络客户端无效劳动,其害处是显而易见,避免这类事件需要注意...(2) 发现过这样语句: SELECT ,,金额 FROM 结余表 WHERE 100*+=2010*100+10 应该改为: SELECT ,,金额 FROM 结余表 WHERE =

10710

sql server中部分函数功能详解

()函数 DATEPART() 函数用于返回日期/时间单独部分,比如、日、小时、分钟等等。...) 返回包括左表中所有记录右表中联结字段相等记录 right join(右联接) 返回包括右表中所有记录左表中联结字段相等记录 inner join(等值连接) 只返回两个表中联结字段相等...13. group by group by 对结果集分组,针对每一组返回。...分钟 mi, n 秒 ss, s 毫秒 ms 微妙 mcs 纳秒 ns 16. datepart() 定义用法 DATEPART() 函数用于返回日期/时间单独部分,比如、日、小时、分钟等等...21. partition by partition by作用仅用于分组 22.convert() 定义用法 CONVERT() 函数是把日期转换为新数据类型通用函数。

1.5K30

MySQL数据库完整知识点梳理----保姆级教程!!!

---返回当前系统时期+时间 2. curdate----返回当前系统日期,不包含时间 3.curtime-----返回当前时间---不包含日期 4.获取指定部分--,日,小时,分钟,秒 5.str_to_date...分组前筛选 分组后筛选 注意 表达式,函数别名分组---只有mysql支持 按照多个字段分组,多个字段间用逗号隔开 添加排序---放在分组排序最后 分组查询时,除了聚合查询分组字段可以查询之外...SELECT CURTIME(); 4.获取指定部分–,日,小时,分钟,秒 1.获取 SELECT YEAR(NOW()) ; SELECT YEAR('2021-5-20') ; 2...SELECT DATE_FORMAT(NOW(),'%y%m%d日') AS 日期; 7.DATEDIFF:计算两个日期相隔天数 SELECT DATEDIFF(NOW(),'2002-1-2...,肯定是放在having子句中 能用分组前筛选,优先使用分组前筛选 ---- 表达式,函数别名分组—只有mysql支持 学生姓名长度进行分组,选出组中同学个数大于两个人组 SELECT

5.9K10

数据库相关

FROM 表名 表别名 where 条件语句 order by ASC|DESC ASC:升序 DESC:降序 在所有sql字句中order by是放在查询语句最后一,是最后一个执行字句, select...bc select substr('abc',-1) from dual;--返回c;负数是后面数为oracle特有的,下标1开始 ASCII码: select ascii('A') from...日期算数运算: 若干天前日期日期-数字=日期 select sysdate-3 from dual; 17-8 -16 若干天后日期日期+数字=日期 select sysdate...允许出现分组字段 范例:查询出所有的新近高于公司平均薪金员工编号、姓名、基本工资、职位、雇佣日期、所在部门名称、位置、上级领导姓名、公司等级、部门人数、平均工资、平均服务年限。...表明 set a=b where 【事务处理】 指同一个session中所有sql语句整体执行 服务器通过session来区分不同用户,每一个session对应一个用户 原子性、一致性、隔离性持久性

1.8K50

Mysql| Mysql函数,聚集函数介绍与使用(Lower,Date,Mod,AVG,...)

无论你什么时候指定一个日期,不管是插入或更新表值还是用WHERE子句进行过滤,日期必须包含格式yyyy-mm-dd. 说明:比如:200591日,给出为2005-09-01。...虽然其他日期格式可能也行,但这是首选日期格式,因为它排除了多义性(如,04/05/06是200654日或200645日或200456日或…… 对比不使用时间函数使用使用MySQL时间函数效果...(与普通函数最主要区别聚集函数值返回一条结果,这当然是使用分组语句情况下) 当我们只需要汇总数据而不用把它们实际数据检索出来时,可以使用聚集函数.在只需要返回汇总数据时,返回实际表数据是对时间处理资源一种浪费...在用于文本数据时,如果数据相应列排序,则MAX()返回最后一。 关于空值: NULL值 MAX()函数忽略列值为NULL。 ...在用于文本数据时,如果数据相应列排序,则MIN()返回最前面的

1.5K10

常用sql查询语句记录

​前言 本文章主要记录下常用sql查询,简单直接展示语句,复杂做一下解释。 1、sql按月统计每月订单数量要按月统计每月订单数量,您可以使用MySQL中日期函数聚合函数。...FROM orders GROUP BY order_month ORDER BY order_month;在这个查询中,我们使用了DATE_FORMAT()函数将order_date列格式化为格式...然后,我们使用COUNT(*)函数计算每个订单月份中订单数量,并将其命名为order_count。最后,我们使用GROUP BY子句订单月份进行分组,并使用ORDER BY子句订单月份进行排序。...(--日)。...请注意,这种方法假设日期时间之间只有一个空格,并且时间部分始终紧跟在日期之后。

11910

SQL写法

4.WHERE:对vt3应用 WHERE 筛选器只有使 为true才被插入vt4     5.GROUP BY:GROUP BY子句中列列表对vt4中分组生成...vt7     8.SELECT:处理select列表产生vt8     9.DISTINCT:将重复vt8中去除产生vt9     10.ORDER BY:将vt9order by子句中列列表排序生成一个游标...vc10     11.TOP:vc10开始处选择指定数量或比例生成vt11 并返回调用者     看到这里,那么用过linqtosql语法有点相似啊?...三、只返回需要数据     返回数据到客户端至少需要数据库提取数据、网络传输数据、客户端接收数据以及客户端处理数据等环节,如果返回不需要数据,就会增加服务器、网络客户端无效劳动,其害处是显而易见...发现过这样语句: SELECT ,,金额 FROM 结余表 WHERE 100*+=2010*100+10  应该改为: SELECT ,,金额 FROM 结余表 WHERE =2010

91620

理解SQL原理SQL调优你必须知道10条铁律

WHERE:对vt3应用 WHERE 筛选器只有使 为true才被插入vt4 GROUP BY:GROUP BY子句中列列表对vt4中分组生成vt5...SELECT:处理select列表产生vt8 DISTINCT:将重复vt8中去除产生vt9 ORDER BY:将vt9order by子句中列列表排序生成一个游标vc10 TOP...:vc10开始处选择指定数量或比例生成vt11 并返回调用者 看到这里,那么用过linqtosql语法有点相似啊?...只返回需要数据 返回数据到客户端至少需要数据库提取数据、网络传输数据、客户端接收数据以及客户端处理数据等环节,如果返回不需要数据,就会增加服务器、网络客户端无效劳动,其害处是显而易见,避免这类事件需要注意...发现过这样语句: SELECT ,,金额 FROM 结余表 WHERE 100+=2010100+10 应该改为: SELECT ,,金额 FROM 结余表 WHERE =2010

1.3K50

8个能提升工作效率SQL好习惯

(5)使用HAVING子句筛选分组 (6)计算所有的表达式 (7)使用ORDER BY对结果集进行排序 执行顺序 1.FROM:对FROM子句中前两个表执行笛卡尔积生成虚拟表vt1 2.ON:对...才被插入vt4 5.GROUP BY:GROUP BY子句中列列表对vt4中分组生成vt5 6.CUBE|ROLLUP:把超组(supergroups)插入vt6 生成vt6 7.HAVING...vt9 10.ORDER BY:将vt9order by子句中列列表排序生成一个游标vc10 11.TOP:vc10开始处选择指定数量或比例生成vt11 并返回调用者 看到这里,那么用过...只返回需要数据 返回数据到客户端至少需要数据库提取数据、网络传输数据、客户端接收数据以及客户端处理数据等环节,如果返回不需要数据,就会增加服务器、网络客户端无效劳动,其害处是显而易见,避免这类事件需要注意...(2) 发现过这样语句: SELECT ,,金额 FROM 结余表 WHERE 100*+=2010*100+10 应该改为: SELECT ,,金额 FROM 结余表 WHERE =

22120

SQL养成这8个好习惯是一笔财富

(5)使用HAVING子句筛选分组 (6)计算所有的表达式 (7)使用ORDER BY对结果集进行排序 2、执行顺序 1、FROM:对FROM子句中前两个表执行笛卡尔积生成虚拟表vt1 2、ON:对...才被插入vt4 5、GROUP BY:GROUP BY子句中列列表对vt4中分组生成vt5 6、CUBE|ROLLUP:把超组(supergroups)插入vt6 生成vt6 7、HAVING...vt9 10、ORDER BY:将vt9order by子句中列列表排序生成一个游标vc10 11、TOP:vc10开始处选择指定数量或比例生成vt11 并返回调用者 看到这里,那么用过...3、只返回需要数据 返回数据到客户端至少需要数据库提取数据、网络传输数据、客户端接收数据以及客户端处理数据等环节,如果返回不需要数据,就会增加服务器、网络客户端无效劳动,其害处是显而易见,避免这类事件需要注意...发现过这样语句: SELECT ,,金额 FROM 结余表  WHERE 100*+=2010*100+10 应该改为: SELECT ,,金额 FROM 结余表 WHERE =2010

74010

如何分析商品订单?

、付费金额、付费单量 1.题中提到查询“每天”数据,涉及到“每个”这类问题要想到《猴子 零学会SQL》里讲过分组汇总”来解决这里类问题 “付费时间”分组,每天付费人数用汇总函数(count对用户...,需要想到用分组汇总或者窗口函数去解决 2.考察了SQL对数据分组应用,本题是在分组前对数据条件筛选,使用是where子句。...如果是要对分组结果后数据指定条件,记得是使用having,而不是where 3.考察对SQL汇总函数应用,常用汇总函数有以下几个: image.png 【问题2解题思路】 查询出20136...14日注册用户付费人数、付费金额 首先我们用多维度拆解分析方法对问题拆解 1.先找出“2013614日注册用户”,这个数据可以“注册表”里查找到 image.png 2.再统计“20136...14日注册用户”“付费人数”“付费金额”总数,这个数据可以“订单明细表”里找到 image.png 3.因为涉及到两张表,所以需要用到多表联结。

84320
领券