Sql Server select group by之外的列
时间: 2024-10-08 12:06:23 浏览: 24
在SQL Server查询中,`GROUP BY`用于对数据按照一个或多个列进行分组,并通常会与聚合函数(如`SUM`, `COUNT`, `AVG`, 等)一起使用,以便汇总每个组的数据。除了`GROUP BY`之外,你还可以在`SELECT`语句中选择其他列,这些列可以分为三类:
1. **非聚合列**:如果你想要在结果集中保留原始值,而不是对它们进行汇总,可以在`SELECT`列表中列出这些非聚集列。例如,假设你有一个`Orders`表,你想按产品ID分组并显示每个订单的数量,同时保留每个订单的实际日期:
```sql
SELECT ProductID, OrderDate, COUNT(*) as TotalOrders
FROM Orders
GROUP BY ProductID, OrderDate;
```
2. **聚合计算列**:即使对某个列进行了分组,你也可以选择对该列应用聚合函数。这可能会返回每组的一个值,而非每行的值。例如:
```sql
SELECT ProductID, AVG(OrderPrice) as AverageOrderPrice
FROM Orders
GROUP BY ProductID;
```
3. **表达式列**:你可以创建基于其他列的计算列。这些在分组之前计算并在结果集中作为单个值提供。比如,计算总销售额除以订单数:
```sql
SELECT ProductID, (SUM(OrderPrice) / COUNT(*)) as AvgPricePerOrder
FROM Orders
GROUP BY ProductID;
```
阅读全文