下記のようなデータを扱っております。
ID | Point
1 | 10
2 | 20
3 | 30
4 | 20
5 | 30
6 | 10
7 | 20
8 | 30
9 | 30
上記データにおいて、Pointが10,20,30と連続している時の
Pointが30でのID値を取得するSQL文が分かりません。
上記データであれば、ID3と8が条件に合致しており、取得したいID値となります。
ID5や9はPointが30ですが、『Pointが10,20,30と連続している』という条件に合致していない為、取得したいID値ではありません。
これを叶えるSQL文を教えて頂けないでしょうか。
(SQLiteを使用しています。)
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
テーブル名は、Tseq とします。
下記のSQLでどうでしょうか。
Accessで試してうまくいきました。
SQLite ではどうか分かりません。
SELECT Tseq.ID
FROM Tseq, Tseq AS T1, Tseq AS T2
WHERE Tseq.Point=30 AND T1.ID=Tseq.ID-1 AND T1.Point=20 AND T2.ID=Tseq.ID-2 AND T2.Point=10;
No.1
- 回答日時:
SQL文っていうのは基本的にレコード順ってあまり考慮されません。
どうしてもやるのであれば……1レコードにPointが3件並ぶようにサブクエリを書くしかないでしょうね。
テストしてないのでこのまま書いても動かないかも知れませんが。
まずは連続するIDのレコードが3件並ぶクエリを書きます。
select T1.ID as ID1, T1.Point as Pt1,
T2.ID as ID2, T2.Point as Pt2,
T3.ID as ID3, T3.Point as Pt3
from Data AS T1
left join Data AS T2 on T2.ID = T1.ID + 1
left join Data AS T3 on T3.ID = T1.ID + 2
これで連続するIDのレコードが並んだデータが出来上がります。
ID1,Pt1,ID2,Pt2,ID3,Pt3
1, 10, 2, 20, 3, 30
2, 20, 3, 30, 4, 20
3, 30, 4, 20, 5, 30
4, 20, 5, 30...........
5, 30...........
...........
こんな感じに。
さらにこれをサブクエリとして、Pointがそれぞれ10,20, 30のレコードを選ぶようにWhere文を書きます。
select * from
(select T1.ID as ID1, T1.Point as Pt1,
T2.ID as ID2, T2.Point as Pt2,
T3.ID as ID3, T3.Point as Pt3
from Data AS T1
left join Data AS T2 on T2.ID = T1.ID + 1
left join Data AS T3 on T3.ID = T1.ID + 2
)
where Pt1=10 and Pt2=20 and Pt3=30
これで取得出来るかと。
Where文の中身を書き換えて
where Pt1+10 = Pt2 and Pt2+10=Pt3
とすれば10点間隔でPointが上がっているIDも分かるかと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Oracle sqlで質問です。 aテーブルとbテーブルがあり、下記のsqlで取得したidとnameに一致しないレ 1 2022/04/20 20:34
- Oracle sqlで質問です。 idを元にidに紐付くデータで住所コードがjpのみのデータ以外のidを取得したい 4 2023/03/20 17:41
- PostgreSQL 画像とカテゴリーを出力したいのですが、取得の条件を付ける方法がわかりません。 2 2022/05/01 18:03
- MySQL 書籍の内容はまともでしょうか? 1 2023/01/22 03:07
- その他(プログラミング・Web制作) Windowsのマクロプログラムで、こんなことできますか? 3 2022/06/28 14:30
- Excel(エクセル) VBA : スクレイピングできない 4 2023/05/12 22:26
- MySQL 次の時間帯の勝率の合計を求めるSQL文 1 2023/07/04 17:12
- PHP コメント機能に返信欄を矢印で追加したい 1 2022/05/09 21:17
- SQL Server SQLのクエリの書き方 1 2022/03/29 23:06
- MySQL SQLで日付別のIDを生成するには 3 2022/10/09 10:34
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
単一グループのグループ関数で...
-
AccessのSQL文で1件のみヒット...
-
SELECT FOR UPDATE で該当レコ...
-
大量レコードをTRUNCATEせずに...
-
【PL/SQL】FROM区に変数を使う方法
-
where句中のtrim関数について
-
アクセスのレポートでレコード...
-
データ
-
ACCESS レコードの並び順について
-
updateで複数行更新したい
-
デフォルトでデータが表示され...
-
【SQL】違うフィールド同士の集...
-
osqleditについて
-
あるカラムに同じ値を持つレコ...
-
SQL*Loader Append
-
「数字で始まらない」ものを抽...
-
phpmyadminでワイルドカードを...
-
PL/SQL内の共通関数の引数にフ...
-
PL/SQLでフェッチでNULLの項目...
-
なぜ、WHERE句とHAVING句がある...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【PL/SQL】FROM区に変数を使う方法
-
単一グループのグループ関数で...
-
SELECT FOR UPDATE で該当レコ...
-
AccessのSQL文で1件のみヒット...
-
トランザクションログを出力せ...
-
where句中のtrim関数について
-
updateで複数行更新したい
-
group byの並び順を変えるだけ...
-
アクセスのレポートでレコード...
-
SQLで条件にヒットしたレコード...
-
引数によってwhere句を切り替え...
-
SQL*Loader Append
-
「数字で始まらない」ものを抽...
-
データ
-
1レコード全てを改行なしで表...
-
これをSQL文で出来るでしょうか?
-
ORMについて
-
ACCESS レコードの並び順について
-
BLOB型項目をSQLの検索条件に指...
-
【SQL】違うフィールド同士の集...
おすすめ情報