少なくとも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で実装されたネオンライト効果

推薦する

SSH経由でリモートLinuxシステムでコマンドを実行する方法

場合によっては、リモート マシンでいくつかのコマンドを実行する必要があることがあります。これが時々行...

CentOS7にMariaDB 10.2.4をインストールする方法の詳細な説明

CentOS 6 以前のバージョンでは、MySQL サーバー/クライアント インストール パッケージ...

DockerとVMwareの競合を解決する

1. Dockerの起動の問題:問題は解決しました: Hyper-V をオンにする必要があります (...

スネークゲームのウェブ版を実装するためのJavaScript

この記事では、ウェブページのスネークゲームを実装するためのJavaScriptの具体的なコードを参考...

MYSQLは、ショッピングカートに追加する際に重複追加を防ぐためのサンプルコードを実装します。

序文最近、仕事の都合で、APP ショッピングカートの注文支払いに取り組んでいました。テスト中にバグが...

mysql サブクエリと結合テーブルの詳細

目次1. サブクエリとは何ですか? 2. 自己結合3. 自然な結合4. 外部接続1. サブクエリとは...

Vue を使用した Amap アプリケーション開発のベスト プラクティス

目次序文非同期読み込みパッケージコンポーネントコンポーネントの使用インターフェースをカスタマイズする...

JS の効率的なマジック演算子の概要

JavaScript は現在、毎年新しいバージョンがリリースされており、より便利で効率的な新しい演算...

MySQL インデックスの長さ制限の原理の分析

この記事は主に、MySQL インデックスの長さ制限の原理の分析を紹介します。サンプル コードを通じて...

Nginx プロキシを使用してインターネットを閲覧する方法

私は通常、Tomcatや他のアプリケーションのリバースプロキシとしてnginxを使用しています。実際...

MySQL 8.0.11 のインストールと設定方法のグラフィック チュートリアル (win10)

この記事ではMySQL 8.0.11のインストールと設定方法を参考までに記録します。具体的な内容は以...

vue3+electron12+dll 開発のためのクライアント構成の詳細な説明

目次リポジトリソースを変更する起動するvue-devtoolsを置き換える予防ボーダーレスウィンドウ...

Nginx がフロントエンド リソースへのクロスドメイン アクセスの問題をどのように解決するかの詳細な説明

フロントエンドのクロスドメイン問題に2日間近く悩まされましたが、ようやくngnxを使って解決したので...

MySQL インデックスの種類 (通常、ユニーク、フルテキスト) の説明

MySQL のインデックスの種類には、通常のインデックス、一意のインデックス、全文インデックスがあり...

ElementUI el-select の過剰なデータに対する解決策についての簡単な説明

目次1. シナリオの説明2. 解決策オプションが多すぎる el-select コンポーネントの解決策...