Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

किसी ईवेंट की न्यूनतम तिथि के आधार पर डेटा को विभिन्न तालिकाओं में समूहित करना

विश्लेषणात्मक कार्य के रूप में MIN का उपयोग करके आप उस फल की गणना कर सकते हैं जिसे ग्राहक के लिए माना जाना चाहिए।

चूंकि आदेश वर्णानुक्रमिक नहीं है, इसलिए आपको DECODE . के साथ मदद करनी चाहिए

बाकी MIN . के साथ एक साधारण समूह है खरीद की तारीख के लिए, लेकिन केवल मिन फल के साथ खरीदारी पर विचार कर रहे हैं।

with cust as (
select CUST_ID, PURCH_DATE, FRUIT,
decode(min(decode(FRUIT,'Apple',1,'Orange',2,'Banana',3)) over (partition by cust_id),
       1,'Apple',2,'Orange',3,'Banana') as min_fruit       
from tab)
select CUST_ID,min_fruit,
       min(case when FRUIT = MIN_FRUIT then PURCH_DATE end) min_purch_date
from cust
group by CUST_ID,min_fruit
order by 1,2

बोलो एक वैकल्पिक समाधान है विश्लेषणात्मक कार्यों का उपयोग किए बिना

पहली सबक्वेरी न्यूनतम फल की गणना करती है एक silpme के साथ group by उसी DECODE . का उपयोग करके तर्क।

आपको मूल तालिका में सबक्वेरी में शामिल होना चाहिए जो ठीक वही है जिसे आप विश्लेषणात्मक कार्यों का उपयोग करके सहेज सकते हैं।

with min_fruit as (
select CUST_ID, 
decode(min(decode(FRUIT,'Apple',1,'Orange',2,'Banana',3)),
       1,'Apple',2,'Orange',3,'Banana') as min_fruit       
from tab
group by cust_id)
select cust.CUST_ID,min_fruit fruit,
       min(case when FRUIT = MIN_FRUIT then PURCH_DATE end) min_purch_date
from tab cust
join min_fruit on cust.cust_id = min_fruit.cust_id
group by cust.CUST_ID,min_fruit
order by 1,2;

आपके नमूना डेटा के साथ यह लौटाता है

   CUST_ID FRUIT  MIN_PURCH_DATE     
---------- ------ -------------------
     10001 Apple  12.01.2019 00:00:00
     10002 Apple  21.01.2019 00:00:00
     10003 Apple  06.02.2019 00:00:00


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle में किसी अन्य के साथ संग्रहीत कार्यविधि को कॉल करें

  2. आरएसी में एएसएच अनुक्रम विवाद की पहचान

  3. एसक्यूएल - क्षेत्रों के बीच संबंध बनाना (सकर्मक संबंध)

  4. ऑरैकल का उपयोग करके अपडेट किए जाने वाले कॉलम की संख्या को कैसे प्रतिबंधित करें?

  5. ओरेकल ट्रेस फ़ाइल से गतिरोध त्रुटि का कारण ढूँढना