एक तरीका है exists
. का उपयोग करना एक सहसंबद्ध उपश्रेणी के साथ विधेय करें जो जांचता है कि विशिष्ट प्रतीक के एक से अधिक मूल्य हैं:
select * from table1 t
where exists (
select 1
from table1
where symbol = t.symbol
and price <> t.price);
यह वापस आ जाएगा:
| Date | Type | Symbol | Price |
|------------------------|------|-----------|--------|
| June, 30 1995 02:00:00 | gaus | 313586U72 | 109.25 |
| June, 30 1995 02:00:00 | gbus | 313586U72 | 108.94 |
| June, 30 1995 02:00:00 | agus | SRR | 10.25 |
| June, 30 1995 02:00:00 | lcus | SRR | 0.45 |
| July, 01 1995 02:00:00 | gaus | 313586U72 | 109.25 |
| July, 01 1995 02:00:00 | gbus | 313586U72 | 108.94 |
संपादित करें:गॉर्डन लिनॉफ़्स के चतुर उत्तर से प्रेरित एक अन्य विकल्प avg()
. का उपयोग करना हो सकता है विंडो वाले फ़ंक्शन के रूप में:
select Date, Type, Symbol, Price
from (
select Date, Type, Symbol, Price, avg = avg(price) over (partition by symbol)
from table1) a
where avg <> price;
संपादित करें:यह सुनिश्चित करने के लिए एक चेक के साथ कि एक ही तिथि पर केवल डुप्लिकेट लौटाए जाते हैं:http:/ /www.sqlfiddle.com/#!6/29d67/1