sql获取分配给每个id的案例数

问题描述

我的sql输出应该看起来像

AssignedTo  Cases
Larry       3
Tom         1
Henry       1

我有3张桌子。关系

select
     CASE
            WHEN r.id = 30 THEN r.name
            ELSE r.name
                 || ' '
                 || u.b_id
        END
    AS assignedto,count(*) as cases
    from cases c,users u,roles r
    where c.id = u.b_id and
          c.assigned_to = u.id and 
          u.role_id = r.id
          and c.b_id = 40 
    group by c.assigned_to;

解决方法

您只需要简单的COUNT()聚合

SELECT assigned_to,COUNT(*) AS cases
  FROM tab
 GROUP BY assigned_to

更新:

在这种情况下(为了包括另一个表中的名称),请使用带有[INNER] JOIN的Select语句:

SELECT u.name AS assignedto,COUNT(*) AS cases
  FROM cases c
  JOIN users u
    ON u.id = c.assigned_to
 GROUP BY u.name
,

选择Count ...按ID分组,分配给。

,

使用COUNT进行汇总,然后使用GROUP BY将汇总分配给组。

  <ul class="container">
    <li class="draggable" draggable="true"><span>0</span> Colorado</li>
    <li class="draggable" draggable="true"><span>1</span> Montana</li>
    <li class="draggable" draggable="true"><span>2</span> Utah</li>
    <li class="draggable" draggable="true"><span>3</span> Montana</li>
    <li class="draggable" draggable="true"><span>4</span> Wyoming</li>
  </ul>

  <ul class="container">
    <li class="draggable" draggable="true"><span>0</span> Maine</li>
    <li class="draggable" draggable="true"><span>1</span> North Carolina</li>
    <li class="draggable" draggable="true"><span>2</span> Florida</li>
    <li class="draggable" draggable="true"><span>3</span> Virginia</li>
    <li class="draggable" draggable="true"><span>4</span> New York</li>
  </ul> 
,

您可以使用功能COUNT。 COUNT()函数返回与指定条件匹配的行数。 GROUP BY子句将记录分组为摘要行。 GROUP BY语句通常与聚合函数(COUNT,MAX,MIN,SUM,AVG)一起使用,以将结果集按一列或多列分组。

Select AssignedTo,count (*) as cases from table group by  AssignedTo
,
select id,sum(assigned_to) as Cases from s1 group by id;
id  Cases
1   29232
2   7654