一.背景
- 最近在做数据统计方面的项目,需要写SQL来统计数据,过程中发现了之前没有接触过的sql用法,在此记录和分享一下。
二. SQL小技巧
1. 根据已有列增加新列
- 概述:比如现有一张表a,有一列value_id,值为[1,2,3,4,5,6]。现在想增加一列,用来描述value_id值的含义,这种场景可以使用本技巧。
- 原有表
SELECT value_id from a;
- 执行结果

- 技巧SQL
SELECT value_id,(
case `value_id`
when '1' then '任务1'
when '2' then '任务2'
when '3' then '任务3'
when '4' then '任务4'
when '5' then '任务5'
when '6' then '任务6'
else '未知任务'
end
) value_name from (
SELECT value_id from a;
) v;
- 执行结果

2. 行转列
- 概述:现有表结构如下。现在已经知道
step
列的值包含[1,3,4]三类,现在要将这三类作为五列来统计value_id+ template_id
的总数。
SELECT value_id, template_id, step ,count1 as cn from a;
- 执行结果

- 技巧SQL
SELECT value_id, template_id ,SUM(IF(`step`='1',cn,0)) as scan_1, SUM(IF(`step`='3',cn,0)) as s1, SUM(IF(`step`='4',cn,0)) as s4
FROM (
SELECT value_id, template_id, step ,count1 as cn from a;
) part
GROUP BY value_id, template_id;
- 执行结果

参考资料