mysql - 为 MySQL 和 SQL Server 编写 SQL 查询

标签 mysql sql sql-server-2005

我有一个以下结构的表格

id name field1 field2 field3
1  aaa   20     30     40
2  aaa   40     50     60
3  bbb   40     50     60
4  aaa   75     55     60
5  bbb   40     50     60
6  bbb   40     50     60

我想要的结果集是

1 aaa (sum of field 1) (product of field 2) (average of field3)
2 bbb (sum of field 1) (product of field 2) (average of field3)

我不知道如何做到这一点。我试过了

select SUM(field1),PROD(field2),AVG(field3) from table GROUP BY name 

但它不起作用。我还需要了解如何在 sql server 2005 中执行此操作。

最佳答案

对于 SQL Server,您可以使用

SELECT SUM(field1),
       CASE
         WHEN COUNT(CASE
                      WHEN field2 = 0 THEN 1
                    END) > 0 THEN 0
         ELSE 1
       END * CASE COUNT(CASE WHEN SIGN(field2) = -1 THEN 1 END )%2
               WHEN 0 THEN 1
               ELSE -1
             END * EXP(SUM(LOG(ABS(NULLIF(field2, 0))))),
       AVG(field3)
FROM   T
GROUP  BY name  

关于mysql - 为 MySQL 和 SQL Server 编写 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7819818/

相关文章:

sql-server-2005 - 如何在 sql 2005 中使用 select unique 语句创建索引 View

php - Jquery - 从 mysql 查询获取数据

sql - 用不存在的行完成表格

mysql - 是否有用于远程数据应用程序的 MS SQL Compact Edition 的开源替代品?

mysql - 带有日历的事件的 SQL 表

sql-server-2005 - 将 SQL Server 2008 降级到 SQL Server 2005

mysql - Laravel Eloquent 查询表名不区分大小写

python - 使用 Python mysql.connector 连接到 MariaDB 时出现问题

java - 如何以相反的顺序显示ListView(最新的在最上面)?

sql - 我可以添加没有 DEFAULT 值的非空列吗