少なくともn日間連続してログインしているユーザーに対するSQLクエリ

少なくともn日間連続してログインしているユーザーに対するSQLクエリ

MySQL ツールを使用して、3 日間連続する例を見てみましょう。

1. SQL テーブルを作成します。

テーブルが存在しない場合は作成します order(id varchar(10),date datetime,orders varchar(10));
順序値に挿入します('1'、'2019/1/1'、10);
順序値に挿入します('1'、'2019/1/2'、109);
順序値に挿入します('1'、'2019/1/3'、150);
順序値に挿入します('1'、'2019/1/4'、99)。
順序値に挿入します('1'、'2019/1/5'、145);
順序値に挿入します('1'、'2019/1/6'、1455);
順序値に挿入します('1'、'2019/1/7'、199)。
順序値に挿入します('1'、'2019/1/8'、188);
順序値に挿入します('4'、'2019/1/1'、10);
順序値に挿入します('2'、'2019/1/2'、109);
順序値に挿入します('3'、'2019/1/3'、150);
順序値に挿入します('4'、'2019/1/4'、99)。
順序値に挿入します('5'、'2019/1/5'、145);
順序値に挿入します('6'、'2019/1/6'、1455);
順序値に挿入します('7'、'2019/1/7'、199);
順序値に挿入します('8'、'2019/1/8'、188);
順序値に挿入します('9'、'2019/1/1'、10);
順序値に挿入します('9'、'2019/1/2'、109);
順序値に挿入します('9'、'2019/1/3'、150);
順序値に挿入します('9'、'2019/1/4'、99)。
順序値に挿入します('9'、'2019/1/6'、145);
順序値に挿入します('9'、'2019/1/9'、1455);
順序値に挿入します('9'、'2019/1/10'、199)。
順序値に挿入します('9'、'2019/1/13'、188);

データシートを見る:

2. row_number() over() ソート関数を使用して、各 ID の順位を計算します。SQL は次のとおりです。

 select *,row_number() over(partition by id order by date ) 'rank'
順序から
orders が NULL ではない場合;

データシートを表示:

3. 日付フィールドからランクフィールドを減算します。SQL は次のようになります。

 *、DATE_SUB(a.date、interval a.rank day) 'date_sub' を選択
から(
select *,row_number() over(partition by id order by date ) 'rank'
順序から
注文がNULLではない場合
)a;

データを表示:

4. ID と日付でグループ化し、グループ化された項目の数 (カウント) を計算し、最も早いログイン時間と最も遅いログイン時間を計算します。SQL は次のとおりです。

 b.id、min(date) 'start_time'、max(date) 'end_time'、count(*) 'date_count' を選択
から(
*、DATE_SUB(a.date、interval a.rank day) 'date_sub' を選択
から(
select *,row_number() over(partition by id order by date ) 'rank'
順序から
注文がNULLではない場合
)
)b
b.date_sub、id でグループ化
count(*) >= 3 である
;

データを表示:

参考文献:

少なくとも7日間連続して注文を行ったユーザーに対するSQLクエリ

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • MySQL で 2 つの日付間の連続ログイン日数の最大数を照会する方法
  • MySQLは2つの日付間の日数、月数、年数を計算します
  • mysqlは連続した日付と変数の割り当てを生成します
  • MySQLで連続ログイン日数を計算する方法

<<:  フロントエンド開発に必要な共通ツール機能のまとめ

>>:  純粋なCSS3で実装されたネオンライト効果

推薦する

モバイルでのHTML5経由のファイルアップロード

ほとんどの場合、PC でファイルをアップロードするにはプラグインが使用され、フラッシュが導入されても...

Vue.js $refs 使用例の説明

プロパティやイベントがあるにもかかわらず、JavaScript で子コンポーネントに直接アクセスする...

ウェブ開発者はIE7とIE8の共存を懸念している

今日、IE8 をインストールしました。ダウンロードするために Microsoft の Web サイト...

MySQLのロック機構に関する最も包括的な説明

目次序文グローバルロック完全なデータベース論理バックアップFTWRL と set global re...

Windowsタイムサーバーの設定方法の詳しい説明

最近、会社のサーバーの時間が不正確で、外部の時間ソースと同期できないことがわかりました。会社はドメイ...

MySQL 1130例外、リモートログインできない解決策

目次質問: 1. リモートログイン権限を有効にする: 2. MySQLの権限を更新します。 3. テ...

Vueのシンプルな状態管理ストアモードを理解する方法

目次概要1. store.jsを定義する2. store.js を使用するコンポーネント3. 成果を...

Dockerコンテナでアプリケーションサービスを自動的に起動する方法の例

コンテナの起動時に Docker コンテナ内のアプリケーション サービスを自動的に起動する場合。 D...

インタラクティブな視覚化 JS ライブラリ gojs の使い方の紹介とヒント

目次1. gojsの紹介2. Gojsのアプリケーションシナリオ3. gojs を選ぶ理由: 4. ...

動的なセカンダリメニューを実現するためのCSS

シンプルなセカンダリメニューを動的に実装するマウスを第 1 レベルのラベル上に置くと、マウスが小さな...

CSSに基づいてマウス入力の方向を決定する

以前、フロントエンド技術グループに所属していたとき、グループのメンバーが面接中に問題に遭遇したと言っ...

オンラインMySQL自動増分IDが使い果たされた場合の対処方法

目次テーブル定義の自動増分 ID InnoDBシステムはrow_idを自動的に増加させるシドInno...

Vue cli開発に基づく外部コンポーネントVantのデフォルトスタイルの変更の詳細な説明

目次序文1. 少ない2. コンポーネントをインポートする3. 設定ファイルを変更するステップ1: l...

MySQL マルチテーブル共同クエリ操作例の分析

この記事では、MySQL のマルチテーブル共同クエリ操作について説明します。ご参考までに、詳細は以下...

HTML における要素の水平および垂直中央揃えに関する議論

ページをデザインするときには、ログイン ウィンドウを中央に配置するなど、DIV を中央に配置し、ペー...