sum() 函数里加case when 统计一个字段 并用另一个字段去重 怎么实现
时间: 2024-03-12 10:45:42 浏览: 245
您可以使用以下 SQL 语句来实现:
```
SELECT SUM(CASE WHEN col1='xxx' THEN col2 ELSE 0 END) AS sum_value
FROM (
SELECT DISTINCT col3, col1, col2
FROM your_table
) t
```
其中,`col1` 是您要统计的字段,`col2` 是您要求和的字段,`col3` 是您要用来去重的字段。`xxx` 是您要筛选的条件。在这个查询中,首先使用了一个子查询来过滤重复的 `col3`,然后在主查询中使用 `CASE WHEN` 语句统计符合条件的 `col2` 的和。
相关问题
oracle 用SUM 和CASE WHEN函数根据一个字段的一些条件统计数量并按另一个字段去重 语句怎么写
您可以使用以下 Oracle SQL 语句来使用 `SUM` 和 `CASE WHEN` 函数根据一个字段的一些条件统计数量并按另一个字段去重:
```
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;
```
其中,`another_field` 为您想要去重的字段,`your_table` 为您的表名,`your_field` 为您想要筛选的字段名,`your_condition_x` 为您想要筛选的条件。请根据实际情况替换这些参数。
这条 SQL 语句将会返回去重后的 `another_field` 字段数量,以及根据 `your_field` 字段的三个条件分别统计的数量结果。您可以根据实际情况修改 `CASE WHEN` 中的条件,并添加更多的 `SUM` 和 `CASE WHEN` 子句。
sql根据一个字段去重后获取全部字段
SQL查询语句中使用DISTINCT关键字可以根据一个字段去重,但是默认情况下它只会返回去重后的这个字段。如果想要获取全部字段,可以使用GROUP BY语句配合聚合函数来实现。具体步骤如下:
1. 使用GROUP BY语句将需要去重的字段作为分组依据。
2. 使用聚合函数统计其他需要展示的字段,例如SUM、AVG、MAX等函数。
3. 最后,将需要展示的字段列出来进行查询。
以下是一个示例代码:
SELECT col1, col2, SUM(col3), MAX(col4)
FROM table
GROUP BY col1
上述代码中,col1是需要去重的字段,col2、col3、col4是需要展示的字段。使用SUM和MAX函数分别统计了col3和col4的总和和最大值。执行该查询语句后,返回的结果将是去重后的col1和展示的其他字段的统计值。
阅读全文