2012-09-19 28 views
5

做一組我有一個查詢,看起來像茨艾倫:如何通過第一個最大

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 

例如我有4行: insert_date CREATIVE_ID,creative_object

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

該查詢返回所有行。

我需要返回

june13 a b 
june13 c d 

如何修改查詢?

+0

它是由MAX組(插入日期)嗎? –

+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_idcreative_object最大的日期是,你只需要從GROUP BY條款刪除insert_date ,女巫會導致爲每個組選擇最大日期,我也會改變IN條件以使其更清楚(儘管在這種特殊情況下它並沒有太大區別),如下所示:

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

這裏的問題是您的插入日期被定義爲一個字符串。它應該被定義爲日期類型,以便Max()可以計算正確的順序。假設有另外一個日期,例如8月05日作爲插入日期,那麼Max將返回6月13日。並且請記住,在字符串排序中,在6月13日和6月13日有差異。

當你max(表達式)該表達式不應該在group by子句中。

GROUP BY insert_date, creative_id, creative_object

希望這有助於。

相關問題