「エンプレサス」テーブルを手に入れました
dbo.empresas
id | name | delegacion_id
-------------------------
1 | A | 3
2 | B | 3
3 | C | 3
4 | D | 4
「パゴス」テーブル
dbo.pagos
id | id_empresa | monto | periodo
----------------------------------
1 | 1 | 120 | 2012-11-01
2 | 1 | 125 | 2012-12-01
3 | 2 | 150 | 2012-11-01
4 | 1 | 200 | 2013-01-01
5 | 2 | 151 | 2012-12-01
パーセンテージである値 X があります。
最後の 2 つの「パゴス」(ピリオド順) の「モントス」を比較して、特定の id_delegacion から少なくとも +X% または -X% 変更された「empresas」を示す必要があります。
たとえば、これらの例の値を使用してこのクエリを実行すると、
X = 10 id_delegacion = 3
期待される出力は次のようになります。
name | periodo | monto
---------------------------
A | 2012-12-01 | 125
A | 2013-01-01 | 200
empresa A は delegacion_id = 3 のものであり、periodo desc (200 => 125) で並べられた最後の 2 つの pagos の比較は 10% を超えています。
B は比較が 10% 未満であるため表示されません。
「pagos」テーブルに行がないため、C は表示されません
D は別の代表団のメンバーです。
この目的の出力を取得するにはどうすればよいですか? 記録として、MySQL 5.5.8 を使用しています。
私がしたこと
私はこれを得た
select P.id_empresa, max(periodo) as periodo from
pagos P
where id_empresa in(
select e.id
from empresa E
where E.id_delegacion = 3
)
group by p.id_empresa, p.periodo
having count(*) > 1
これらを使用して、複数の「パゴ」行を持つ「empresas」を取得し、id_delegation = 3 を取得しました。最初の期間 (最大) も取得しますが、各 empresa の 2 番目を取得する方法がわかりません。それらを比較します。
ありがとう