У меня есть запрос, который использует подзапрос, чтобы определить, есть ли у элемента в объединенной таблице дублирующаяся запись, и если да, то данные не извлекаются в родительский запрос:
select
(f.listing_datetime) as datetime,
round(avg(f.listing_price), 0) as price,
round(avg(f.listing_sqft), 0) as sqft,
round(avg(f.listing_p_per_sqft), 2) as p_per_ft,
f.listing_neighborhood, count(*) as points
from (
select
a.listing_datetime, a.listing_price, a.listing_sqft, a.listing_p_per_sqft,
a.listing_neighborhood, i.listing_tokens, count(i.listing_tokens) as c
from
agg_cl_data as a
left join incoming_cl_data_desc as i
on a.listing_url = i.listing_url
where a.listing_datetime between curdate() - interval 30 day and curdate()
group by i.listing_tokens
having c < 2
) as f
group by day(f.listing_datetime), f.listing_neighborhood
order by f.listing_datetime;
Как вы можете видеть, используя простой способ обработки дубликатов с предложением HAVING, я фактически теряю оригинальную запись, которая была сохранена, потому что любая агрегированная запись с большим, чем 2, выбрасывается. Есть ли лучший способ сделать это, чтобы я не потерял некоторые данные, БЕЗ создания новой таблицы, к которой будет запрашиваться?