私は、タイムスタンプとティックデータを含むsqliteデータベースを持っています。タイムスタンプには日付と時刻が含まれています。 '終わりの日'の分析のために、同じ日付のタイムスタンプの重複を除外したいと思います。重複している日付のデータベース行が選択されているかどうかは関係ありません。sqliteテーブル選択のタイムスタンプから日の重複を無視する
表は次のようになります。
CREATE TABLE StockQuotes
(`Timestamps` varchar(19), `Open` float)
;
INSERT INTO StockQuotes
(`Timestamps`, `Open`)
VALUES
('2010-09-16 13:16:22', 33.63),
('2010-09-17 13:16:22', 33.53),
('2010-09-20 11:26:30', 33.46),
('2010-09-20 13:16:22', 33.46),
('2010-09-21 11:26:30', 33.76),
('2010-09-22 11:26:30', 33.56),
('2010-09-23 11:26:30', 33.86),
('2010-09-23 13:26:30', 33.86)
;
マイ所望の結果は次のとおりです。
Timestamps Open
2010-09-16 13:16:22 33.63
2010-09-17 13:16:22 33.53
2010-09-20 11:26:30 33.46
2010-09-21 11:26:30 33.76
2010-09-22 11:26:30 33.56
2010-09-23 11:26:30 33.86
または
Timestamps Open
2010-09-16 13:16:22 33.63
2010-09-17 13:16:22 33.53
2010-09-20 13:16:22 33.46
2010-09-21 11:26:30 33.76
2010-09-22 11:26:30 33.56
2010-09-23 13:26:30 33.86
私はこのクエリで重複を見つけることができます。
SELECT Timestamps, COUNT(SubTS) AS CountSub FROM
(
SELECT Timestamps,substr (Timestamps,1,10) AS SubTS, Open
FROM StockQuotes
)
GROUP BY SubTS HAVING (COUNT(SubTS)>1);
しかし、最終的には、これは動作しません:
SELECT * FROM StockQuotes WHERE Timestamps NOT IN
(
SELECT Timestamps, COUNT(SubTS) AS CountSub FROM
(
SELECT Timestamps,substr (Timestamps,1,10) AS SubTS, Open
FROM StockQuotes
)
GROUP BY SubTS HAVING (COUNT(SubTS)>1)
);
私のミスは何ですか?
構造に問題があるように思われる根本原因を修正することを考えてください。 –
あなたはそうです。根本原因を修正することは、同じ日からデータベースにダニを置かないことを意味します。しかし私は、異なる頻度(毎日、毎週など)のダニをデータベースに保存することを考えています。これらの目盛りを頻度でフィルタリングすることは、私のSQL知識のレベルではややこしいことです。だから私はちょうど '終末'を使用します。 – Bebass
いいえ、1つのテーブルに2種類のファクトを格納しないことを意味します。私があなたの質問を正しく理解していれば、1日に1つの「公開」価値があります。あなたはその事実を保存するテーブルを持っていないようです。 'create table stock_opens(open_date date主キー、open_price decimal(10、2)not null);のようなものが良いスタートになります。 ' –