1

投稿を検索しましたが、実行しようとしている特定のクエリに対する回答が見つかりません。私は非常に単純なテーブルを持っています:

mysql> DESCRIBE offpeak_mccavg_raw;
+-------+--------------+------+-----+---------+-------+
| Field | Type         | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+-------+
| date  | date         | YES  |     | NULL    |       |
| node  | varchar(30)  | YES  |     | NULL    |       |
| price | decimal(6,4) | YES  |     | NULL    |       |
+-------+--------------+------+-----+---------+-------+

毎日、特定のノードと特定の価格に対して約 1700 のエントリがあります (以下の例では、日付が連続していないことに注意してください。いくつかのことをテストしているので、日付がずれているのはこのためです。通常、毎日エントリーです。)

mysql> select * from offpeak_mccavg_raw order by node limit 10;
+------------+---------------+---------+
| date       | node          | price   |
+------------+---------------+---------+
| 2012-01-08 | AEC           | -0.4083 |
| 2013-01-18 | AEC           |  1.2125 |
| 2013-01-18 | AECI          | -1.7575 |
| 2012-01-08 | AECI          | -1.2488 |
| 2013-01-18 | AECI.ALTW     | -5.0950 |
| 2012-01-08 | AECI.ALTW     | -6.3258 |
| 2013-01-18 | AECI.AMMO     | -0.4725 |
| 2012-01-08 | AECI.AMMO     | -0.8117 |
| 2013-01-18 | AECI.APM_1.AZ | -0.9088 |
| 2012-01-08 | AECI.APM_1.AZ | -0.7729 |
+------------+---------------+---------+

特定の日付範囲で毎日同じ価格のノードのペアを見つけようとしています。1 日分のデータしかない場合、その特定の日に一致するペアを見つけるクエリを作成できましたが、特定の日の範囲ではできませんでした。理想的には、過去 2 週間、2 か月などの価格に一致するすべてのノードのペアを表示するクエリを実行したいと考えています。

特定の日に機能するクエリは次のとおりです。

SELECT b1.node, b2.node FROM onpeak_mccavg_raw AS b1 LEFT JOIN onpeak_mccavg_raw AS b2 ON b1.price = b2.price WHERE b1.node < b2.node;

WHERE 句を拡張して日付範囲を追加しようとしましたが、うまくいきません。

何か案は?

4

1 に答える 1

0
SELECT   b1.node, b2.node
FROM     onpeak_mccavg_raw b1
    JOIN onpeak_mccavg_raw b2
      ON b1.date = b2.date
     AND b1.node < b2.node
GROUP BY b1.node , b2.node
HAVING   SUM(b1.price = b2.price) = COUNT(*)
于 2013-01-20T20:57:35.583 に答える