В настоящее время у меня есть запрос, объединяющий две таблицы для создания нового для анализа. Получив некоторые смешные результаты при попытке нарисовать его для презентации, я узнал, что некоторые из них - это поддельные данные, которые никогда не были очищены. Я смог идентифицировать данные, вызывающие проблемы, и ради времени хотел бы исключить его в запросе, чтобы я мог двигаться вперед с анализом.SQL исключает строки, соответствующие всем критериям.
Это подделка данных соответствует всем этим критериям:
- rate_type = Стандартный
- client_net_cleared = 0
- программа является пустым (не Null)
Я определил их в SELECT, с CASE, но понял, что для того, чтобы использовать это, мне пришлось бы делать другую таблицу, запрашивая все в этом минусе, что было определено как удовлетворяющее вышеуказанным критериям на основе statem CASE нт. Должно быть лучшее решение, чем это.
В настоящее время я пытаюсь исключить их как часть инструкции WHERE, но прочитал другие вопросы и узнал, что ГДЕ не очень хорошо справляется с несколькими дополнительными условиями.
Что у меня есть:
SELECT *
, CASE WHEN tad.rate_type = 'Standard'
AND tad.client_net_cleared = '0'
AND program= '' THEN 1
ELSE '0'
END AS noise
FROM tableau.km_tv_ad_data_import tad
JOIN tableau.km_tv_ad_report ga
ON ga.session_timestamp >= tad.timestamp - INTERVAL '4 minute'
AND ga.session_timestamp <= tad.timestamp + INTERVAL '5 minute'
AND ga.session_timestamp != tad.timestamp
WHERE tad.timestamp >= '2016-09-01'
AND (tad.rate_type != 'Standard'
AND tad.client_net_cleared != '0'
AND tad.program != '')
GROUP BY 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21
Пример набора данных:
timestamp | rate_type | program | client_net_cleared | noise
---------------------|-----------|-----------------|--------------------|-------
2016-11-01 18:00:00 | Standard | Diving | 50 | 0
2016-12-01 21:00:00 | Holiday | Classic Albums | 100 | 0
2016-11-01 09:00:00 | FireSale | Panorama | 0 | 0
2016-10-01 12:00:00 | Standard | | 0 | 1
2016-12-01 15:00:00 | Holiday | MythBusters | 100 | 0
2016-10-01 13:00:00 | FireSale | House | 200 | 0
Что мне нужно:
Исключить строки, соответствующие всем трем критериям: rate_type = Стандартная , client_net_cleared = 0, программа bl ank (не Null).
ли у попробовал вложенную таблицу, как следующее: - 'выбрать * из ( - Поместите свой запрос здесь ) а где rate_type = стандартный и client_net_cleared программы = 0 и не Null' –
Вы можете 't по порядковой позиции (по крайней мере, не в sql-сервере). И если вы можете в mysql, это привычка, которую вы должны немедленно прекратить, если не раньше. –
Особенно при использовании 'SELECT *'. Это делает его зависимым от порядка столбцов в инструкции 'CREATE TABLE'. У меня такое чувство, что он на самом деле группируется по всем столбцам, поэтому он должен быть просто «SELECT DISTINCT *». – Barmar