SQL:GROUP BY子句中的所有属性是否都需要在SELECT子句中列出?

时间:2017-09-02 13:51:37

标签: mysql sql database relational-database mysql-workbench

假设我有一个名为Employee的表,其中包含Name,Salary,Department。

我知道这会奏效:

SELECT Department, AVG(Salary)
FROM EMPLOYEE
GROUP BY Department;

丢弃部门'是否不正确?来自SELECT子句,如下所示:

SELECT AVG(Salary)
FROM EMPLOYEE
GROUP BY Department;

或者它还能用吗?

2 个答案:

答案 0 :(得分:0)

两个查询都可以工作并提供输出。但是,第二个查询只会产生一个列(即平均工资),因此,您无法仅从第二个查询中将其追溯到部门ID,例如:

查询1输出:

Row row = rowIterator.next();
for(int i = 0; i < row.getLastCellNum(); i++) {
    Cell cell = row.getCell(i);
    if(cell != null && cell.getCellType() != Cell.CELL_TYPE_BLANK) {
       // handle not null values
    }else{
       // handle null values
    }
}

查询2输出:

dept | salary
1    | 5000
2    | 6000

答案 1 :(得分:0)

不,不一定。您也可以使用第二个查询。但是您无法看到薪水按“分组”关键字排序的离职时间。