このようなデータ構造には細心の注意を払っています。まず、すべてのid
sの価格は1つだけです:
select id
from table t
group by id
having count(distinct price) > 1;
最も安全な方法は、id
ごとに特定の価格を抽出することだと思います。 (最大値を言います)そして、集計を行います:
select sum(price)
from (select id, max(price) as price
from table t
group by id
) t;
次に、データを修正して、追加のディメンションが繰り返されないようにします。 IDと価格ごとに1行のテーブルが必要です(または重複しているが、発効日と終了日によって制御されている可能性があります)。
データがめちゃくちゃです。特定のIDのすべての行で価格が同じであると想定しないでください。データを修正するまで、フィールドを使用するたびに確認する必要があります。