union all
- union 相当于 or,会对结果进行去重(a或b,ab同时存在的不计)
- union all 结果不去重。
例如:
select
device_id,
gender,
age,
gpa
from user_profile
where university='山东大学' union all
select
device_id,
gender,
age,
gpa
from user_profile
where gender='male';
case函数
- case是一种多分支的函数,可以根据条件列表的值返回多个可能的结果表达式。
可用在任何允许使用表达式的地方,但不能单独作为一个语句执行。
分为:
- 简单case函数
- 搜索case函数 - 简单case函数
从上到下的将测试表达式的值与每个when子句的简单表达式进行比较。
如果某个简单表达式的值与测试表达式的值相等,则返回第一个与之匹配的when子句所对应的结果表达式的值。
如果所有简单表达式的值与测试表达式的值都不相等,指定了else子句,则返回else子句中指定的结果表达式的值。若没有指定else子句,则返回null。
case 测试表达式
when 简单表达式1 then 结果表达式1
......
when 简单表达式n then 结果表达式n
else 结果表达式n+1
end
- 搜索case函数
按从上到下的计算每个when子句的布尔表达式。
返回取值为true的布尔表达式所对应的结果表达式的值。
如果没有取值为true的布尔表达式,指定了else子句,返回else子句中指定的结果。如果没有指定else子句,则返回null。
case
when 布尔表达式1 then 结果表达式1
......
when 布尔表达式n then 结果表达式n
else 结果表达式n+1
end
例如:
select
case
when age < 25 or age is null then '25岁以下'
when age >= 25 then '25岁及以上'
end age_cut,
count(*) number
from
user_profile
group by
age_cut;
时间函数
括号内的date应为标准日期格式xxxx-xx-xx。
- day(date)
- month(date)
- year(date)
例如:
select
day(date) as day,
count(*) as question_cnt
from
question_practice_detail
where
month(date) = 8
and year(date) = 2021
group by
date;