分组到底是做什么的?

JAN*_*JAN 4 mysql group-by

这里取的一个例子,我试图理解究竟GROUP BY做了什么:

鉴于此employee表:

+-------+----------+--------+------------+
| Empid | Empname  | Salary | DOB        |
+-------+----------+--------+------------+
| 1     | Habib    | 2014   | 2004-12-02 |
| 2     | Karan    | 4021   | 2003-04-11 |
| 3     | Samia    | 22     | 2008-02-23 |
| 4     | Hui Ling | 25     | 2008-10-15 |
| 5     | Yumie    | 29     | 1999-01-26 |
+-------+----------+--------+------------+
Run Code Online (Sandbox Code Playgroud)

执行后 mysql> select * from employee group by empname;

我们得到:

+-------+----------+--------+------------+
| Empid | Empname  | Salary | DOB        |
+-------+----------+--------+------------+
| 1     | Habib    | 2014   | 2004-12-02 |
| 4     | Hui Ling | 25     | 2008-10-15 |
| 2     | Karan    | 4021   | 2003-04-11 |
| 3     | Samia    | 22     | 2008-02-23 |
| 5     | Yumie    | 29     | 1999-01-26 |
+-------+----------+--------+------------+
Run Code Online (Sandbox Code Playgroud)

那么,这是否意味着GROUP BY只是按键对表进行排序?

谢谢

O. *_*nes 13

GROUP BY启用摘要.具体来说,它控制使用COUNT(),SUM(),AVG(),MIN(),MAX()等汇总函数.在您的示例中没有太多要总结的内容.

但是,假设您有一个Deptname列.然后你可以发出这个查询并通过Deptname获得平均工资.

SELECT AVG(Salary) Average,
       Deptname
  FROM Employee
 GROUP BY Deptname
 ORDER BY Deptname
Run Code Online (Sandbox Code Playgroud)

如果您希望以特定顺序放置结果集,请使用ORDER BY.