MYSQL 具有总计的不同值

MYSQL Distinct values with totals

正在尝试 return 列出我所有已解决工单的用户以及他们解决的工单数量。 此代码有效,但在 while 循环内查询似乎是不好的做法。

有没有更高效的方法?

//Get all users who have resolved a ticket
$stmt = $db->prepare("SELECT DISTINCT resolvedby FROM tickets");
$stmt->execute();

while($rows = $stmt->fetch()){
    $user = $rows['resolvedby'];
    echo "$user "; //Echo each user

    $new = $db->prepare("SELECT count(resolvedby) as total FROM tickets WHERE resolvedby = :u ");
    $new->bindParam('u',$user);
    $new->execute();

    $row = $new->fetch();
    echo $row['total']; //Echo the total of each user
    echo "<br />";
}

Returns:

User    Total Resolved
Shawn        40
David        38
Jeff         52
Frank        47

您需要将 group by 与聚合函数计数一起使用:

SELECT
      resolvedby
    , COUNT(*) AS total
FROM
    tickets
GROUP BY
    resolvedby

当然,您想用一些 WHERE 子句限制结果。