hive 子查询 when
时间: 2024-12-27 10:20:03 浏览: 4
### Hive SQL 中子查询与 CASE WHEN 的使用
#### 子查询的使用方法
在Hive SQL中,子查询可以在SELECT、FROM以及WHERE子句中使用。子查询返回的结果集可以作为外部查询的一部分来使用。
```sql
-- 示例:嵌套子查询
SELECT *
FROM (
SELECT id, name, salary
FROM employees
WHERE department_id = 10
) AS dept_employees;
```
此示例展示了如何利用子查询从特定部门获取员工信息并将其作为一个临时表供外层查询使用[^4]。
#### CASE WHEN 表达式的应用
`CASE WHEN`表达式允许基于条件逻辑执行不同的操作,在处理复杂业务场景时非常有用。它支持两种语法形式:
- **简单 CASE 函数**
当测试相等性时适用。
- **通用 CASE 函数**
可以评估多个布尔表达式,并根据第一个为真的情况返回相应的结果;如果没有任何匹配,则返回 ELSE 部分指定的内容。
以下是 `CASE WHEN` 结合子查询的一个例子:
```sql
WITH sales_data AS (
SELECT product_id,
SUM(sales_amount) total_sales
FROM sales_transactions
GROUP BY product_id
)
SELECT s.product_id,
s.total_sales,
CASE
WHEN s.total_sales > 500 THEN 'High'
WHEN s.total_sales BETWEEN 200 AND 500 THEN 'Medium'
ELSE 'Low' END AS sales_category
FROM sales_data s;
```
这段代码首先通过CTE计算每种产品的总销售额,接着在外层查询里运用 `CASE WHEN` 对这些产品按销售量分类标记。
阅读全文