使用 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 汇总值。
我不确定我的标题问题是否有意义。但是我有下面的查询。
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 汇总值。