MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

1時間あたりのユーザーログイン時間の形式でデータをグループ化し、最近1時間にログインしたユーザーのレコードを取得するMySQLクエリ?


これには、JOIN条件でサブクエリを使用できます。構文は次のとおりです-

 SELECTyourTablevariableName。*FROM(SELECT MAX(UNIX_TIMESTAMP(yourDateTimeColumnName))AS anyAliasName FROM getLatestHour GROUP BY HOUR(UserLoginDateTime))yourOuterVariableNameJOIN yourTableName yourTablevariableNameON UNIX_TIMESTAMP(yourDateTimeColumnName)=yourOuterVariableName.yourAliasNameWHER pre> 

上記の構文と達成される結果を理解するために、テーブルを作成しましょう。テーブルを作成するためのクエリは次のとおりです-

 mysql> create table getLatestHour->(-> UserId int、-> UserName varchar(20)、-> UserLoginDateTime datetime->);クエリOK、影響を受ける行数0(0.68秒)

これで、insertコマンドを使用してテーブルにいくつかのレコードを挿入できます。レコードは、ユーザーのログイン日時を含むユーザーレコードです。クエリは次のとおりです-

 mysql> insert into getLatestHour values(100、'John'、 '2019-02-04 10:55:51'); Query OK、1行が影響を受ける(0.27秒)mysql> insert into getLatestHour values(101、 ' Larry'、' 2019-02-04 12:30:40');クエリOK、影響を受ける1行(0.16秒)mysql> getLatestHour値に挿入(102、' Carol'、' 2019-02-04 12:40: 46');クエリOK、影響を受ける1行(0.20秒)mysql> getLatestHour値に挿入(103、' David'、' 2019-02-04 12:44:54');クエリOK、影響を受ける1行(0.17秒) )mysql> getLatestHourに挿入values(104、'Bob'、 '2019-02-04 12:47:59');クエリOK、影響を受ける1行(0.15秒)

selectステートメントを使用して、テーブルのすべてのレコードを表示します。クエリは次のとおりです-

 mysql> select * from getLatestHour; 

以下は出力です-

 + -------- + ---------- + --------------------- + | UserId |ユーザー名| UserLoginDateTime | + -------- + ---------- + --------------------- + | 100 |ジョン| 2019-02-04 10:55:51 || 101 |ラリー| 2019-02-04 12:30:40 || 102 |キャロル| 2019-02-04 12:40:46 || 103 |デビッド| 2019-02-04 12:44:54 || 104 |ボブ| 2019-02-04 12:47:59 | + -------- + ---------- + ------------------ ---セット内の+5行(0.00秒)

これは、1時間あたりのデータをグループ化し、最近の1時間のレコードを取得するためのクエリです。クエリは次のとおりです-

 mysql> SELECTtbl1。*->FROM(-> SELECT MAX(UNIX_TIMESTAMP(UserLoginDateTime))AS m1-> FROM getLatestHour-> GROUP BY HOUR(UserLoginDateTime)->)var1-> JOIN getLatestHour tbl1-> ON UNIX_TIMESTAMP (UserLoginDateTime)=var1.m1-> WHERE DATE(UserLoginDateTime)='2019-02-04'; 

以下は出力です-

 + -------- + ---------- + --------------------- + | UserId |ユーザー名| UserLoginDateTime | + -------- + ---------- + --------------------- + | 100 |ジョン| 2019-02-04 10:55:51 || 104 |ボブ| 2019-02-04 12:47:59 | + -------- + ---------- + ------------------ ---セット内の+2行(0.05秒)

  1. 対応する列の1つの値に基づいて、連結をグループ化し、データを1つの行に配置するMySQLクエリ?

    これには、GROUP_CONCAT()を使用します。値が1つだけの場合は、MySQLWHERE句を使用します。まずテーブルを作成しましょう- mysql> create table DemoTable (    PlayerName varchar(40),    PlayerStatus tinyint(1) ); Query OK, 0 rows affected (0.60 sec) 挿入コマンド-を使用して、テーブルにいくつかのレコードを挿入します mysql> insert into DemoTable values('C

  2. 最後に作成されたテーブル名(最新)を取得するためのMySQLクエリ?

    これには、INFORMATION_SCHEMA.TABLESの概念を使用することができます。まず、テーブルを作成しましょう。これが最新のテーブルになります- mysql> create table DemoTable1323    -> (    -> FirstName varchar(10)    -> ); Query OK, 0 rows affected (0.43 sec) 挿入コマンド-を使用して、テーブルにいくつかのレコードを挿入します mysql> insert into DemoTa