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

少なくとも7日間連続して注文を行ったユーザーに対する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)

アイデア

テーブルを ID と時間でグループ化し、時間からランク rnk を減算します。時間が連続している場合、減算結果は等しくなります。

 select *,date-rankrnk from (select *,row_number() over(partition by id order by date) rankfrom orde) a;

次に、ID、rnk、countでグループ化します。

 id、rnk、count(*) ok から選択 
(select *,date-rankrnk from (select *,row_number() over(partition by id order by date) rankfrom orde) a) b group by id,rnk;

次の表が得られます。

最後に、count 項目 ok>=7 をフィルタリングします。

直接フィルタリングすることもできます:

 id,rnkを選択 
(select *,date-rankrnk from (select *,row_number() over(partition by id order by date) rankfrom orde) a) b group by id,rnk having count(*)>=7;

上記は、7日間以上連続して注文を行ったユーザー向けに編集者が紹介したSQLクエリです。お役に立てれば幸いです。また、123WORDPRESS.COM ウェブサイトをサポートしてくださっている皆様にも感謝申し上げます。

以下もご興味があるかもしれません:
  • 継続的にログインするユーザーに対するSQLクエリ
  • 7日以上ログインしているユーザーを実装するSQLクエリメソッド
  • ユーザーの連続ログイン日数を調べるSQLクエリステートメント
  • SQL Server で連続日付レコードのコードをクエリする方法

<<:  トピックページデザインの 5 つの基本スキル (Alibaba UED Shanmu)

>>:  新しい CSS :where および :is 疑似クラス関数とは何ですか?

推薦する

Ubuntuにopencvをインストールする正しい方法の詳細な説明

この記事ではUbuntuでC++インターフェースを使用してopencvをインストールする方法について...

MySQLは2つの日付間の日数、月数、年数を計算します

MySQL 組み込みの日付関数 TIMESTAMPDIFF は、2 つの日付間の秒数、分数、時間数、...

Linux でハイパースレッディング技術を動的に有効/無効にする方法の詳細な説明

序文Intel のハイパースレッディング テクノロジーにより、1 つの物理コア上で 2 つのスレッド...

MySQL CHARとVARCHARの保存と読み取りの違い

導入保存時と読み取り時に CHAR 型と VARCHAR 型の違いを本当にご存知ですか?まずいくつか...

MySql の忘れたパスワードの変更方法はバージョン 5.7 以上に適しています

1. まずmysqld.exeプロセスを停止します2. cmd を開き、mysql の bin ディ...

MySQL の group by に関する簡単な説明

目次1. はじめに2. ユーザーテーブルを準備する2.1 グループ化ルール2.2 グループの使用2....

Linux カーネル デバイス ドライバーのメモリ管理に関する注意事項

/************************ * Linux メモリ管理 *********...

Vue サーバーに js 構成ファイルをインポートする方法

目次背景成し遂げるvue-cli2.0での設定方法の補足要約する背景プロジェクトにはローカル構成ファ...

リストループスクロールを実現するための HTML+CSS+JavaScript サンプルコード

説明: 指定された時間内に前のノードのコンテンツを置き換えるタイマーを設定します。 1. キーコード...

XHTML CSS ページをプリンタ ページに変換する

<br />これまで、Web ページのプリンタ対応バージョンを作成するには、印刷したとき...

CentOS7 で MySQL のスケジュールされた自動バックアップを実装する方法

実稼働環境で起こる最も嬉しいことは、シナリオによっては、更新または削除時にパラメータを無視せざるを得...

外部ネットワークアクセスを許可するためのMysql5.6の設定手順の詳細を共有する

最近、MySQL 5.6 を導入しましたが、デフォルトでは MySQL はローカル サービスのみを許...

Linux インストール MongoDB の起動と一般的な問題の解決

MongoDB のインストール プロセスと問題記録1. MongoDBのインストールMongoDBを...

Linux ncコマンドの概要

NC のフルネームは Netcat (Network Knife) で、作成者は Hobbit &a...

Vueプロジェクトはログインと登録の効果を実現します

この記事の例では、ログインと登録の効果を実現するためのvueプロジェクトの具体的なコードを共有してい...