首页 > 解决方案 > 在 MySQL 中聚合一个简单的 COUNT

问题描述

我正在制定一个试图聚合 COUNT 的 MySQL 查询。数据看起来像这样......表是“工人”

   NAME      DPT
   -----     ----
   CLARK     10
   JAMES     10
   ALLEN     10
   ADAMS     20
   WU        20
   MARTIN    30
   FITZ      30
   SCHMIDT   30
   MILLER    30

我需要在部门中列出这样的表格

   NAME      DPT   CNT
   -----     ----   ---
   CLARK     10     3
   JAMES     10     3
   ALLEN     10     3
   ADAMS     20     2
   WU        20     2
   MARTIN    30     4
   FITZ      30     4
   SCHMIDT   30     4
   MILLER    30     4

我试过这个...

SELECT DISTINCT(NAME), DPT, COUNT(DPT) as CNT FROM workers GROUP BY DPT;

没有成功。很确定这很简单,但我很难过。关于我哪里出错的任何想法?- JW

标签: mysqlsql

解决方案


由于计数聚合在DPT字段上,因此您只需要为此创建一个子查询,然后与workers表连接以获取名称。

SELECT w.NAME, w.DPT, tot.CNT
FROM workers AS w JOIN (SELECT DPT, COUNT(1) AS CNT FROM workers GROUP BY DPT) AS tot ON w.DPT = tot.DPT 
ORDER BY w.DPT, w.NAME;

推荐阅读