2012-09-19 11 views
5

साथ खंड द्वारा एक समूह कैसे करना है मैं एक प्रश्न है कि thos की तरह लग रहा है:एक अधिकतम

SELECT max(insert_date), 
     creative_id, 
     creative_object 
FROM rtb_creatives 
WHERE adgroup_id = 'agid1608844879' 
     AND is_delete IN (0) 
GROUP BY insert_date, 
      creative_id, 
      creative_object 

जैसे insert_date CREATIVE_ID, creative_object

june 12 a b 
june13 a b 
june 12 c d 
june13 c d 

क्वेरी सभी पंक्तियों लौटा रहा है: मैं 4 पंक्तियों की है।

मैं वापस जाने के लिए

june13 a b 
june13 c d 

मैं क्वेरी कैसे संपादित कर सकता है?

+0

यह 'MAX (insert_date) 'समूह होगा? –

+2

समूह से insert_date को हटाएं और पुनः प्रयास करें और हमें बताएं कि क्या हो रहा है। – CRDave

उत्तर

5

बस GROUP BY खंड से insert_date निकालें:

SELECT max(insert_date) AS insert_date, creative_id, creative_object 
from rtb_creatives 
where adgroup_id='agid1608844879' and is_delete in (0) 
group by creative_id, creative_object 
0
create table rtb_creatives (insert_date varchar(20), creative_id char(1), creative_object char(1)); 
insert into rtb_creatives (insert_date, creative_id, creative_object) values 
('june 12', 'a', 'b'), 
('june 13', 'a', 'b'), 
('june 12', 'c', 'd'), 
('june 13', 'c', 'd') 
; 

SELECT insert_date, creative_id, creative_object 
from rtb_creatives 
where 
    adgroup_id='agid1608844879' 
    and is_delete in (0) 
    and insert_date = (select max(insert_date) from rtb_creatives) 
group by insert_date, creative_id, creative_object 
; 
+-------------+-------------+-----------------+ 
| insert_date | creative_id | creative_object | 
+-------------+-------------+-----------------+ 
| june 13  | a   | b    | 
| june 13  | c   | d    | 
+-------------+-------------+-----------------+ 
+0

क्या आप वाकई काम करेंगे ??? – WojtusJ

0

तुम सिर्फ जानने की जरूरत है, क्या विशेष creative_id और creative_object के लिए अधिकतम तारीख है, तो आप सिर्फ GROUP BY खंड से insert_date हटाने की जरूरत , चुड़ैल प्रत्येक समूह के लिए अधिकतम तिथि चुनने का कारण बनता है, मैं इसे और अधिक स्पष्ट करने के लिए आईएन स्थिति को बदल दूंगा (हालांकि इस विशेष मामले में यह एक बड़ा अंतर नहीं बनाता है), जैसे:

SELECT max(insert_date) as insert_date, 
     creative_id, 
     creative_object 
FROM rtb_creatives 
WHERE adgroup_id = 'agid1608844879' 
     AND is_delete = 0 
GROUP BY creative_id, 
      creative_object 
0

यहां समस्या यह है कि आपकी डालने की तारीख स्ट्रिंग के रूप में परिभाषित की जाती है। इसे दिनांक प्रकार के रूप में परिभाषित किया जाना चाहिए ताकि अधिकतम() सही क्रम की गणना कर सके। मान लीजिए कि अगस्त 05 जैसी अन्य तारीखें डालने की तारीख के रूप में हैं, तो मैक्स 13 जून को वापस आ जाएगा। और ध्यान रखें कि स्ट्रिंग ऑर्डरिंग में जून 13 और 13 जून में अंतर है।

जब आप अधिकतम (अभिव्यक्ति) धारा द्वारा समूह में अभिव्यक्ति नहीं होनी चाहिए।

GROUP BY insert_date, creative_id, creative_object

आशा इस मदद करता है।

संबंधित मुद्दे