select case when count(*) =0 then '0' else distinct a end as result from abc
时间: 2024-04-07 09:33:16 浏览: 252
在你的查询中,你可以使用以下语法来处理值为空时返回 '0',不为空时返回去重后的结果:
```sql
SELECT
CASE
WHEN COUNT(*) = 0 THEN '0'
ELSE (SELECT DISTINCT a FROM abc)
END AS result
FROM abc;
```
在这个示例中,我们首先使用 COUNT(*) 函数来计算行数,以判断是否所有值为空。如果行数为 0,则返回 '0';否则,使用子查询 `(SELECT DISTINCT a FROM abc)` 来获取去重后的结果,并将结果赋值给别名 `result`。
请注意,这个示例假设子查询 `(SELECT DISTINCT a FROM abc)` 返回的结果只有一列,如果有多列,则需要相应地调整查询逻辑。
根据你的具体需求和数据结构,你可以进行适当的调整。
相关问题
SELECT COUNT(DISTINCT another_field), SUM(CASE WHEN your_field = your_condition_1 THEN 1 ELSE 0 END) AS count_1, SUM(CASE WHEN your_field = your_condition_2 THEN 1 ELSE 0 END) AS count_2, SUM(CASE WHEN your_field = your_condition_3 THEN 1 ELSE 0 END) AS count_3FROM your_table;这条语句里怎么让your_field根据another_field去重
如果您需要让 `your_field` 字段根据 `another_field` 字段去重,可以在 `COUNT` 函数和 `GROUP BY` 子句中分别使用 `DISTINCT another_field`:
```
SELECT
COUNT(DISTINCT another_field),
SUM(CASE WHEN your_field = your_condition_1 THEN 1 ELSE 0 END) AS count_1,
SUM(CASE WHEN your_field = your_condition_2 THEN 1 ELSE 0 END) AS count_2,
SUM(CASE WHEN your_field = your_condition_3 THEN 1 ELSE 0 END) AS count_3
FROM your_table
GROUP BY DISTINCT another_field;
```
这样,查询结果将会根据 `another_field` 字段去重,并对每个不同的 `another_field` 值分别统计 `your_field` 字段的数量。
,count(distinct case when taggeddate>current_date-7 and pojie=1 then order_id end) as sa_pojie7_count postgresql 如何修改代码
在PostgreSQL中,如果你想计算过去7天内标记为"pojie"(假设这是一个布尔型或整数标识)且有订单记录的唯一订单ID的数量,原始代码可能不太精确。这里有一个建议的修正版:
```sql
SELECT COUNT(DISTINCT CASE WHEN tagged_date >= CURRENT_DATE - INTERVAL '7 days' AND pojie = 1 THEN order_id END) AS sa_pojie7_count
FROM your_table;
```
这里的改动包括:
- 使用 `INTERVAL '7 days'` 而不是 `current_date-7` 来确保时间间隔的精确计算。
- 删除了不必要的 `end` 关键字,因为CASE语句本身就是完整的表达式。
- 确保`tagged_date`列是日期类型并且已经进行了正确的比较。
如果`taggeddate`是一个字符串,需要先转换成日期类型,如:
```sql
SELECT COUNT(DISTINCT CASE WHEN EXTRACT(DAY FROM (DATE(taggeddate))::DATE) >= EXTRACT(DAY FROM CURRENT_DATE - INTERVAL '7 days') AND pojie = 1 THEN order_id END) AS sa_pojie7_count
FROM your_table;
```
阅读全文