少なくとも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 疑似クラス関数とは何ですか?

推薦する

Mysql 5.7.19 無料インストール版 (64 ビット) の設定方法に関する詳細なチュートリアル

公式サイトから mysql-5.7.19-winx64 をダウンロードします。これはシステムの 64...

doctype のマークアップ検証

しかし最近、この方法を使用すると問題が発生することがわかりました。コードを参照してください。コードを...

ストアド プロシージャでエラー状態をトリガーする mysql ストアド プロシージャの分析例 (SIGNAL および RESIGNAL ステートメント)

この記事では、例を使用して、MySQL がストアド プロシージャで引き起こすエラー状態 (SIGNA...

Navicat 経由で MySQL にリモート接続する方法

Navicat を使用して IP 経由で直接接続すると、次のようなさまざまなエラーが報告されます: ...

Linux (Centos7) での redis5 クラスターの構築と使用方法の詳細な説明

目次1. 簡単な説明2. クラスターを作成する手順2.1. ディレクトリを作成する2.2. ソースコ...

Vue 実践における実用的な小さな魔法のまとめ

初回の読み込みを高速化できるルートの遅延読み込みをどうして忘れられるでしょうか?ルーティングの遅延読...

Jenkins の Docker のデプロイとインストール手順

まず、Docker がインストールされたサーバーが必要です。 (私はすでにこれをサーバーにインストー...

HTML で div を非表示にする テーブルを非表示にする TABLE または DIV コンテンツの CSS スタイル

今夜、数日間悩まされていた問題を解決しました。本当に解決したかどうかはわかりませんが、解決されている...

Docker ビルド PHP 環境チュートリアル詳細説明

Dockerのインストール公式インストールスクリプトを使用して最新バージョンのDockerをインスト...

CSS 背景画像を設定するための 6 つの興味深いヒント

background-image は、おそらくすべてのフロントエンド開発者がキャリアの中で少なくとも...

Linuxコマンドのファイル上書きとファイル追加の詳細な説明

1. コマンド > と >> の違いコマンド>: ファイルが存在する場合は、...

CSS 完全な視差スクロール効果

1. 何ですか視差スクロールとは、複数の背景レイヤーを異なる速度で動かすことで、3次元のモーション...

HTML でのテキストエリアの使用と一般的な問題およびケース分析

textarea タグはよく使われる HTML タグです。主に長いテキストを入力するときに改行するた...

CentOS で MySQL を完全にアンインストールする方法

この記事では、CentOSでのMySQLの完全アンインストールについて記録しています。具体的な内容は...

Linux ディレクトリ切り替え実装コード例

ファイルの切り替えは Linux でよく行われる操作です。Linux を初めて学ぶときに最初に触れる...