我想将订单的数量分组,以显示有多少客户拥有该订单数量。
我想出了:
select count(*) as quantidade_pedidos, clientes.id
from pedidos
inner join clientes
on pedidos.cliente_id = clientes.id
where pedidos.aprovado = 1
group by quantidade_pedidos
但是我不能按照量化的方式进行分组' quantdade_pedidos'反正。
有没有办法按临时列分组?这样做的另一种方式?显示有多少客户(编号)有这么多订单?
实施例 已下订单8个 - > 3个客户有8个订单 等
答案 0 :(得分:1)
您的原始查询错误。您需要按clientes.id
分组:
select count(*) as quantidade_pedidos, c.id
from pedidos p inner join
clientes c
on p.cliente_id = c.id
where p.aprovado = 1
group by c.id;
在聚合查询中, unaggregated 列位于group by
,而不是聚合列。
另请注意,表别名使查询更易于编写和阅读。
对于第一行中的问题,请使用子查询:
select quantidade_pedidos, count(*)
from (select count(*) as quantidade_pedidos, c.id
from pedidos p inner join
clientes c
on p.cliente_id = c.id
where p.aprovado = 1
group by c.id
) x
group by quantidade_pedidos;
但鉴于问题中的查询不起作用,我不确定这是你真正想做的事情。