【问题标题】:mysql - multiple rows of COUNT querymysql - 多行 COUNT 查询
【发布时间】:2016-07-20 16:34:15
【问题描述】:

比如我这里有一个数据

ID    Doctor    Status
1     Wooka     Approved
2     Jamba     Approved
3     Jamba     Approved
4     Wooka     Approved
5     Wooka     Approved
6     Wooka     Approved
7     Wooka     Approved
.    .          .
.    .          .
.    .          .
99    

对于前7行(演示目的,不限于7行)我希望它像这样输出

Doctor    Count
Wooka     5
Jamba     2

虽然我不确定如何在 COUNT() 中做到这一点

SELECT COUNT(*) FROM table WHERE status='Approved'

我真的不知道如何让它灵活地回答我的问题。

【问题讨论】:

  • 查看如何分组

标签: mysql sql select count


【解决方案1】:
SELECT
  t.doctor,
  COUNT(*) AS c
FROM
  table t
WHERE
  t.status = 'Approved'
GROUP BY
  t.doctor

【讨论】:

  • 这不处理“前 7 行”的要求。
【解决方案2】:

您可以在子查询中使用limit 子句来限制返回的行数,然后使用执行count 的聚合查询包装此查询:

SELECT   doctor, COUNT(*)
FROM     (SELECT   doctor
          FROM     mytable
          WHERE    status = 'Approved'
          ORDER BY id ASC
          LIMIT    7 -- or some other number
         ) t
GROUP BY doctor

【讨论】:

  • @Noobster 是的。这就是group by 子句的用途
  • 你好,是的,这行得通。但我想知道如何映射所有状态?像 Approved、Pending、Denied、...这样的列表还在继续吗?
  • @Noobster 如果您想要每个状态的计数,请删除内部 where 子句并将状态添加到 group by 子句。
  • @Noobster 是的,确实。
猜你喜欢
  • 2011-05-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-22
相关资源
最近更新 更多