मैं इस तरह की डेटा संरचना से बहुत सावधान रहूंगा। सबसे पहले, जांचें कि सभी id
की बिल्कुल एक कीमत है:
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;
फिर, अपना डेटा ठीक करें ताकि आपके पास बार-बार योगात्मक आयाम न हो। प्रति आईडी एक पंक्ति और मूल्य के साथ एक तालिका होनी चाहिए (या शायद डुप्लिकेट के साथ लेकिन प्रभावी और समाप्ति तिथियों द्वारा नियंत्रित)।
डेटा गड़बड़ है; आपको यह नहीं मानना चाहिए कि किसी दिए गए आईडी के लिए सभी पंक्तियों पर कीमत समान है। जब तक आप डेटा को ठीक नहीं करते हैं, तब तक आपको यह जांचना होगा कि हर बार जब आप फ़ील्ड का उपयोग करते हैं।