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

推薦する

MySQL の最適化: InnoDB の最適化

勉強の計画は簡単に中断され、継続するのが困難です。先日、社内で事業の方向性を調整するための会議があり...

Jenkins を通じて None のイメージを定期的にクリーンアップする方法

序文継続的なコード配信のプロセスで、Jenkins を利用して Docker イメージを作成すると、...

Dockerはredis 5.0.7をインストールし、外部構成とデータの問題をマウントします

Redis は、ANSI C で記述されたオープンソースの NoSQL データベースであり、ネットワ...

MySQL ステートメントの概要

目次1. データベースの使用を選択2. 情報を表示する3. テーブルを作成する4. データを挿入する...

Echarts 基本入門: 棒グラフと折れ線グラフの一般的な構成

1eChartsの基本手順4つのステップ1 DOMコンテナを見つける2 初期化3 設定オプション4 ...

Linuxグループの基礎知識ポイントまとめ

1. Linuxグループの基本紹介Linux では、すべてのユーザーはグループに所属する必要があり、...

ナビゲーションバーのドロップダウンメニューのサンプルコードを実装するためのHTML+CSS

効果コード内の画像は自分で変更できますドロップダウンメニューのHTMLコード <ヘッダークラ​...

この記事ではCSSボーダーの使い方を説明します

境界線のスタイルborder-style プロパティは、表示する境界線の種類を指定します。 bord...

MySQLの制限を使用して大規模なページングの問題を解決する方法

序文日常の開発では、MySQL を使用してページングを実装する場合、常に MySQL 制限構文を使用...

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

MySQL は最も人気のあるリレーショナル データベース管理システムです。WEB アプリケーションに...

js 配列エントリ() 反復メソッドを取得する

目次1.entires() メソッドの詳細な構文2.entires() メソッドの一般的な使用法と注...

div 内の img と span の垂直方向の中央揃えの問題について

以下のように表示されます。 XML/HTML コードコンテンツをクリップボードにコピー<htm...

Linuxホスト名変更コマンドの詳しい説明

Linux ホスト名変更コマンド1. ホスト名を一時的に変更するだけの場合は、hostname コマ...

CentOS での MySQL ワークベンチのインストールと設定のチュートリアル

この記事では、MySQL Workbenchのインストールと設定のチュートリアルを参考までに紹介しま...

vscodeで保存した後のHTML自動フォーマットの問題を解決する

vsCode のバージョンは最近更新され、現在のバージョン番号は 1.43 です。実際、vsCode...