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

推薦する

Vue elementUI はツリー構造テーブルと遅延読み込みを実装します

目次1. 成果を達成する2. バックエンドの実装2.1 エンティティクラス2.2 データベース内のデ...

表 td 画像水平および垂直中央揃えコード

HTMLコード:コードをコピーコードは次のとおりです。 <td align="cen...

win10 での mysql 8.0.16 winx64 インストールの最新グラフィック チュートリアル

このデータベースをダウンロードするには、多くの時間とトラフィックがかかります。踏み込んだ落とし穴で時...

HTML テーブル マークアップ チュートリアル (39): ヘッダーの明るい境界線の色属性 BORDERCOLORLIGHT

テーブル ヘッダーでは、明るい境界線の色を個別に定義できます。基本的な構文<TH ボーダーカラ...

emとは?emとpxの紹介と変換方法

それは何ですか? em はフォントの高さを指し、どのブラウザでもデフォルトのフォントの高さは 16 ...

jQueryのチェーンプログラミングスタイルの詳細な例

チェーンプログラミングの実装原理jQuery を使用すると、開発者は常にドット構文を使用して独自のメ...

Nginx のタイムドログカットの詳細な説明

序文デフォルトでは、Nginx ログはファイルに書き込まれます。各ドメインのログを区別するために、通...

Vue は QR コード スキャン機能を実装します (スタイル付き)

必要: vue を使用して QR コードのスキャンを実現します。プラグイン: QRコードリーダー;プ...

CentOS7仮想マシンで固定IPアドレスを設定する方法

私の開発環境は、VMWare 仮想マシンに CentOS をインストールし、ホスト ファイルにインタ...

CentOS で LibreOffice を使用してドキュメント形式を変換する方法

プロジェクト要件では、アップロードされたドキュメントの前処理が必要です。ユーザーが doc 形式でド...

JSのバイナリファミリーについての簡単な説明

目次概要ブロブBlob の動作BLOB ダウンロード ファイルブロブ画像のローカル表示BLOB ファ...

CSS 境界線の長さ制御機能の実装

以前は、境界線の長さをコンテナーよりも小さくする必要があったときに、div ネストを使用していました...

MySQLデータベースの基礎知識と操作のまとめ

この記事では、例を使用して、MySQL データベースの基本的な知識と操作について説明します。ご参考ま...

Linuxでawkを使用する方法の詳細な説明

awk を学ぶ前に、sed、grep、tr、cut などのコマンドを学んでおく必要があります。これら...

VMware マルチノード環境を構成する方法

このチュートリアルでは CentOS 7 64 ビットを使用します。各仮想マシンに 2GB のメモリ...