sql 笔记

1、group by 多个字段

GROUP BY X, Y意思是将所有具有相同X字段值和Y字段值的记录放到一个分组里。

2、当对某字段使用聚合函数时,例如 sum(event_count),如果结果为空,则设为0:

isnull(sum(event_count), 0) 

3、group by 、 having 、 order by

    分组允许把数据分为多个逻辑组,以便能对每个组进行聚集计算。

    GROUP BY子句中列出的每个列都必须是检索列(?)或有效的表达式
(但不能是聚集函数)。如果在SELECT中使用表达式,则必须在GROUP BY子句中指定相同的表达式。不能使用别名。

    除聚集计算语句外, SELECT语句中的每个列都必须在GROUP BY子句中给出。例如:

SELECT EvalStep,Tactic,Technique ,isnull(sum(EventCount), 0) as sum_EventCount 
FROM "represent_7" WHERE EvalPhase = 'Lateral Movemet'  
group by EvalStep,Tactic ,Technique

该SQL语句是对相同的 EvalStep,Tactic ,Technique分成一组,然后计算每组EventCount的和。

select 可以不出现group by子句中的字段,例如:

SELECT isnull(sum(EventCount), 0) as sum_EventCount 
FROM "represent_7" WHERE EvalPhase = 'Lateral Movemet'  
group by EvalStep,Tactic ,Technique

如果去除了group by EvalStep,Tactic ,Technique子句, 如下图所示:

SELECT EvalStep,Tactic,Technique ,isnull(sum(EventCount), 0) as sum_EventCount 
FROM "represent_7" WHERE EvalPhase = 'Lateral Movemet'

会报错 Cannot use non-grouped columns [EvalStep, Tactic, Technique], expected [], 

如果在select添加EventCount字段,而在group by 子句中没有EventCount字段,例如:

SELECT EvalStep,Tactic,Technique, EventCount FROM represent_7 
WHERE EvalPhase = 'Lateral Movemet' 
group by EvalStep,Tactic,Technique

也会报错:Cannot use non-grouped column [EventCount], expected [EvalStep, Tactic, Technique]

可以不用分组,直接检索所需要的列,然后使用order by子句排序:

SELECT EvalStep,Tactic,Technique,EventCount FROM represent_7 
WHERE EvalPhase = 'Lateral Movemet' order by EvalStep,Tactic,Technique

4、having 组级过滤

order by 排序用SELECT语句检索出的数据

5、上传csv文件

LOAD DATA INFILE 'csv_file_path' 
INTO TABLE table_name  
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 ROWS;


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值