select age_cut
,count(1) as "number"
from(select case when age is null or age < 25 then '25岁以下'
when age >=25 then '25岁及以上'
end as age_cut
,age
from user_profile) t
group by age_cut;
- case when
- 字段的别名
结论:通常不需要加引号,但在特定情况下必须加。
在大多数常规场景下,不加引号是标准且推荐的写法。
什么时候【不需要】加引号?(90% 的情况)
如果你的别名满足以下条件,直接写即可,清晰又规范:
- 只包含字母、数字和下划线(
a-z,A-Z,0-9,_)。 - 不以数字开头。
- 不是 SQL 的保留关键字(如
count,order,group,select等)。 - 不包含空格或特殊符号(如
+,-,(),%)。
什么时候【必须】加引号?
如果别名包含以下情况,必须加引号,否则 SQL 会报错或执行错误:
包含空格
包含特殊字符
使用了保留关键字
需要区分大小写
🌟 最佳实践建议:
- 首选方案:尽量起简单的英文名(字母+下划线),这样完全不需要引号,兼容性最好,迁移数据库也不会出错。👍 user_count, avg_gpa, total_amount
- 次选方案:如果必须用特殊字符或空格:在 MySQL/Hive/Spark 中用反引号:`User Count`
在 PostgreSQL/Oracle 中用双引号:"User Count"
总结
常规别名(如 user_num):不要加引号。
特殊别名(含空格、特殊符、关键字):必须加引号。
引号类型:MySQL/Hive 用 `,Oracle/PG 用 "。
- 表的别名 子查询
在 SQL 标准(ANSI SQL) 以及几乎所有的主流数据库(MySQL, PostgreSQL, Oracle, SQL Server, Hive, Spark SQL 等)中:
任何出现在
FROM子句中的子查询(派生表),都必须拥有一个别名。只要看到
FROM或JOIN后面紧跟着一个 左括号(开始子查询,那么在这个子查询的 右括号)后面,一定要跟一个别名!

京公网安备 11010502036488号