このクエリを取得しました:
select
T.id_empresa, max(periodo) as ultimoPeriodo, (
select sum(monto) from cuotasindical.pagos
where id_empresa = T.id_empresa and periodo = max(T.periodo)
) as ultimoMonto,
min(periodo) as periodoAnterior, (
select sum(monto) from cuotasindical.pagos
where id_empresa = T.id_empresa and periodo = min(T.periodo)
) as anteriorMonto
from
(
select
P1.id_empresa, P1.periodo, sum(monto) as monto
from cuotasindical.pagos P1
where P1.id_empresa in (select id_empresa from cuotasindical.empresa where id_delegacion = 5)
group by P1.id_empresa, P1.periodo
having P1.periodo in (
select * from (
select periodo
from cuotasindical.pagos
where P1.id_empresa = id_empresa order by periodo desc limit 2
) as L
)
and count(distinct P1.periodo) > 1
) T
group by id_empresa
having (abs(max(monto) - min(monto))*100/
(
select sum(monto) from cuotasindical.pagos T2
where T2.id_empresa = id_empresa and T2.periodo = max(periodo)
) > 10);
エンプレサごとに、最後の 2 つのパゴス (ピリオド順) を比較して、パーセンテージ (この場合は 10) よりも大きいか小さいかを確認する必要があります。
私は得ています
エラー コード: 1054。'where 句' の不明な列 'P1.id_empresa'
その比較がある唯一のwhere句は、制限のあるサブクエリです
having P1.periodo in (
select * from (
select periodo
from cuotasindical.pagos
where P1.id_empresa = id_empresa
order by periodo desc limit 2
) as L
)
and count(distinct P1.periodo) > 1
二重サブクエリは、IN句の制限2を回避するためのものです(このリンクで取得してください)
なぜそのエラーが発生するのですか? group by の後に、having 句のサブクエリで参加できると思いました (where 句のように)
または、私が見逃しているエラーがありますか?
前もって感謝します