タグ付けされた質問 「gaps-and-islands」

19
アクセスの連続する最小日数を決定するSQL?
次のユーザー履歴テーブルには、特定のユーザーが(24時間UTC期間に)Webサイトにアクセスした日ごとに1つのレコードが含まれています。何千ものレコードがありますが、ユーザーあたり1日1レコードのみです。ユーザーがその日のWebサイトにアクセスしていない場合、レコードは生成されません。 ID UserId CreationDate ------ ------ ------------ 750997 12 2009-07-07 18:42:20.723 750998 15 2009-07-07 18:42:20.927 751000 19 2009-07-07 18:42:22.283 私が探しているのは、パフォーマンスの良いこのテーブルのSQLクエリです。これにより、1日を逃すことなく(n)日間、どのユーザーIDがWebサイトにアクセスしたかがわかります。 言い換えると、このテーブルに連続する(前日または後)日付の(n)レコードを持っているユーザーの数は?シーケンスから欠落している日がある場合、シーケンスは壊れており、1から再開する必要があります。ここでは、ギャップのない連続した日数を達成したユーザーを探しています。 このクエリと特定のスタックオーバーフローバッジの類似点は、もちろん偶然です。

11
mysqlの連番のギャップを見つける方法は?
別のシステムから値がインポートされたテーブルを持つデータベースがあります。自動インクリメント列があり、重複する値はありませんが、欠損値があります。たとえば、次のクエリを実行します。 select count(id) from arrc_vouchers where id between 1 and 100 100を返す必要がありますが、代わりに87を返します。不足している数値の値を返すクエリを実行できますか?たとえば、ID 1-70と83-100のレコードが存在する場合がありますが、IDが71-82のレコードはありません。71、72、73などを返品したい これは可能ですか?

20
SQLで実行中のカウンターの「ギャップ」を見つけるにはどうすればよいですか?
SQLテーブルのカウンター列の最初の「ギャップ」を見つけたいのですが。たとえば、値が1、2、4、5の場合、3を確認します。 もちろん値を順番に取得して手動で処理することもできますが、SQLでそれを行う方法があるかどうか知りたいのですが。 さらに、さまざまなDBMSで動作する標準SQLである必要があります。

20
2つの日付の間の日付のリストを取得する
標準のmysql関数を使用すると、2つの日付の間の日のリストを返すクエリを作成する方法があります。 たとえば、2009-01-01と2009-01-13を指定すると、次の値を持つ1列のテーブルが返されます。 2009-01-01 2009-01-02 2009-01-03 2009-01-04 2009-01-05 2009-01-06 2009-01-07 2009-01-08 2009-01-09 2009-01-10 2009-01-11 2009-01-12 2009-01-13 編集:私ははっきりしていないようです。このリストを生成したいと思います。データベースに(datetimeによって)値が格納されていますが、上記の日付のリストへの左外部結合でそれらを集計したい(この結合のいくつかの右側から数日間nullが期待され、これを処理します) )。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.