使用 GROUP BY/HAVING,然后扩展结果

Use GROUP BY/ HAVING, but then expand the results

我不确定我的标题问题是否有意义。但是我有下面的查询。

SELECT mdn,
       cost_center, 
       sum(data_allowance) AS allowance, 
       sum(mib) AS 'sum_usage', 
       rate_plan 
FROM verizon 
GROUP by cost_center
HAVING SUM(mib) > SUM(data_allowance);

这给了我超过他们限额的线路的数据。这是我想要的信息,但每个成本中心关联了多行。虽然每一行可能还没有结束,但我仍然想 SELECT 那些行。另一方面,有些线路可能超出了他们的限额,但总的来说,他们没有超过他们的限额,我不想显示这些信息。

希望这是清楚的,提前谢谢你。

您是否正在尝试获取与成本中心相关的详细信息?如果是,则使用 join:

SELECT v.*
FROM verizon v JOIN
     (SELECT cost_center
      FROM verizon 
      GROUP BY cost_center
      HAVING SUM(mib) > SUM(data_allowance)
     ) vsum
     ON v.cost_center = vsum.cost_center;

如果您还需要汇总值,可以将其包含在 vsum 子查询中,并 select 汇总值。