oracle sql中case when 怎么计数
时间: 2023-11-17 22:58:19 浏览: 172
在Oracle SQL中,可以使用CASE WHEN语句来进行计数。例如,如果你想计算users表中年龄大于等于18岁的男性用户数量,可以使用以下语句:
SELECT COUNT(CASE WHEN age >= 18 AND sex = 1 THEN 1 END) AS male_count
FROM users;
这个语句中,COUNT函数用于计算满足条件的记录数量,CASE WHEN语句用于判断每个记录是否符合条件,如果符合则返回1,否则返回NULL。最后,AS关键字用于给计算结果取一个别名。
相关问题
oracle中case when嵌套case when
在Oracle中,可以使用CASE WHEN语句进行条件判断和嵌套。嵌套CASE WHEN语句可以用来处理更复杂的条件逻辑。在你提供的SQL语句中,使用了嵌套CASE WHEN语句来计算机房状态。
案例提供了一个例子来解释嵌套CASE WHEN语句的用法。在这个例子中,当sum(ups_status)为1时,机房状态为0;当sum(ups_status)为2时,机房状态为1;当sum(ups_status)为0时,机房状态为0。
如何有效地结合使用 Oracle SQL中的CASE WHEN语句和WM_CONCAT函数来处理数据?
在Oracle SQL中,CASE WHEN语句用于根据特定条件对值进行转换或分类,而WM_CONCAT函数则用于合并行级的数据为单列的字符串。当你需要根据某些条件对数据分组,并将每个组的结果连接成一个字符串时,可以组合这两个功能。
例如,假设你有一个销售表Sales,包含字段ProductCategory(产品类别)和SaleAmount(销售额)。你想按照类别汇总每个月的总销售额,如果某个类别在某月没有销售额,则显示"无"。你可以这样做:
```sql
SELECT ProductCategory,
TO_CHAR(SalesDate, 'YYYY-MM') AS Month,
CASE WHEN SUM(SaleAmount) > 0 THEN WM_CONCAT(SUM(SaleAmount) || ', ')
ELSE '无'
END AS Total_Sales
FROM Sales
GROUP BY ProductCategory, TO_CHAR(SalesDate, 'YYYY-MM')
ORDER BY ProductCategory, Month;
```
在这个查询中,
- CASE WHEN判断每个类别下是否有非零的销售额(`SUM(SaleAmount) > 0`),如果有,就计算总和并添加到字符串中;
- 如果没有销售额(`SUM(SaleAmount) = 0`),则返回'无';
- WM_CONCAT函数将所有的金额(可能是逗号分隔的数值)合并成一个字符串。
阅读全文