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

时间:2015-02-18 16:05:18

标签: mysql group-by having

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

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这些行。另一方面,有些线路可能超出了他们的限额,但总的来说,他们没有超过他们的补贴,我不想显示这些信息。

希望这是明确的,并提前感谢你。

1 个答案:

答案 0 :(得分:2)

您是否正在尝试获取与成本中心相关的详细信息?如果是,请使用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子查询中包含该值并选择汇总值。