私は現在、2つのテーブルをマージして新しいテーブルを作成して分析しています。プレゼンテーションのためにそれをグラフ化しようとしたときに面白い結果を得た後、私はそれが決してクリーンアップされなかった偽のデータであることを学びました。私は問題の原因となっているデータを特定できました。時間のために、クエリ内でデータを除外したいので、分析を進めることができます。複数の条件すべてに一致するSQL除外行
この偽のデータは、これらすべての条件と一致する:
- rate_type =標準
- client_net_cleared = 0
- プログラムは
(NOT NULL)空白である私はSELECTでこれらを識別CASEステートメントに基づいて上記の基準を満たしていると特定されたものを差し引いた別のテーブルをこのテーブルから検索しなければならないことに気が付いたnt。それ以上の解決策が必要です。
私は現在、これらを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 =標準:
は、3つのすべての条件に一致する行を除外、client_net_cleared = 0、プログラムはbl ank(Nullではない)。
uが次のように、ネストされたテーブルを試してみましたの: - '選択* から( - ここにあなたのクエリを入れて )rate_type =標準とclient_net_cleared = 0、プログラムはあなたができる –
NULL'されていないA序数でグループ化する(少なくともSQL Serverにはない)。そして、あなたがmysqlの中でできるのであれば、早くなくてもすぐに止めるべき習慣です。 –
特に 'SELECT *'を使用している場合。これは、 'CREATE TABLE'ステートメントの列の順序に依存します。私は彼が実際にすべての列でグループ化していると感じているので、SELECT DISTINCT *にする必要があります。 – Barmar