SQLで連続するレコードの比較をする(LeetCode Database)

概要

前回に引き続きSQLです。

問題

+---------------+---------+
| Column Name   | Type    |
+---------------+---------+
| id            | int     |
| recordDate    | date    |
| temperature   | int     |
+---------------+---------+

今回用意されているテーブルは以上です。

以下のように、前日よりも気温が気温が高かった日のレコードのidを表示してください、という問題です。




解法

SELECT w1.Id
FROM Weather w1, Weather w2
WHERE w1.Temperature > w2.Temperature AND subdate(w1.recordDate, 1) = w2.recordDate

テーブルを二つ用意し、subdate関数を使うことで時間の差を求めます。

売り上げが前日よりも上の日とか抜き出すのに使えそうなSQLとなりました。

SQLは列の比較には強くても、行の比較は思ったより苦手ということを改めて感じました。

コメント

このブログの人気の投稿

Braveブラウザの同期機能をiPhoneで設定した話。

JavaのindexOf関数はナイーブ法で実装されているらしい

djoserを使ったDjango REST Frameworkでのカスタムユーザーモデル認証機能の実装