{"id":2602,"date":"2020-12-29T12:36:40","date_gmt":"2020-12-29T04:36:40","guid":{"rendered":"https:\/\/www.gbase8.cn\/?p=2602"},"modified":"2021-07-19T15:50:47","modified_gmt":"2021-07-19T07:50:47","slug":"%e9%9d%a2%e8%af%95%e9%a2%98%ef%bc%9agbase-8a%e6%b1%82%e6%af%8f%e4%b8%aa%e7%94%a8%e6%88%b7%e6%9c%80%e9%95%bf%e8%bf%9e%e7%bb%ad%e7%99%bb%e5%bd%95%e5%a4%a9%e6%95%b0%e4%b8%a4%e4%b8%aa%e6%97%a5%e6%9c%9f","status":"publish","type":"post","link":"https:\/\/www.gbase8.cn\/en\/2602","title":{"rendered":"\u6570\u636e\u5e93SQL\u9762\u8bd5\u9898\uff1aGBase 8a\u6c42\u6bcf\u4e2a\u7528\u6237\u6700\u957f\u8fde\u7eed\u767b\u5f55\u5929\u6570,\u4e24\u4e2a\u65e5\u671f\u7684\u95f4\u9694\u5c0f\u4e8e\u6216\u7b49\u4e8e 3 \u5747\u89c6\u4e3a\u8fde\u7eed\u767b\u5f55"},"content":{"rendered":"<p>\u6839\u636e\u7f51\u53cb\u7684\u4e00\u4e2a\u9e45\u5382\u9762\u8bd5\u9898\u7531\u6765\uff0c\u539f\u59cb\u5185\u5bb9\u6458\u5f55\u5982\u4e0b\uff1a\u6c42\u6bcf\u4e2a\u7528\u6237\u7684\u6700\u957f\u8fde\u7eed\u767b\u5f55\u5929\u6570\uff0c\u4e24\u4e2a\u65e5\u671f\u7684\u95f4\u9694\u5c0f\u4e8e\u6216\u7b49\u4e8e&nbsp;3&nbsp;\u5747\u89c6\u4e3a\u8fde\u7eed\u767b\u5f55\u3002\u6bd4\u5982&nbsp;01-01&nbsp;\u53f7\u767b\u5f55\uff0c\u6700\u8fd1\u7684\u4e0b\u4e00\u6b21\u767b\u5f55\u662f&nbsp;01-04&nbsp;\u53f7\uff0c\u4e24\u4e2a\u65e5\u671f\u7684\u95f4\u9694\u7b49\u4e8e&nbsp;3&nbsp;\u5929\uff0c\u56e0\u6b64\u8fd9\u4e24\u4e2a\u65e5\u671f\u4e4b\u95f4\u7684\u5929\u6570\u90fd\u7b97\u4f5c\u6d3b\u8dc3\u5929\u6570\uff0c\u4e00\u5171&nbsp;4&nbsp;\u5929\u3002<\/p>\n\n\n\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_84 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Directory Navigation<\/p>\n<label for=\"ez-toc-cssicon-toggle-item-6a2ac449ec8c4\" class=\"ez-toc-cssicon-toggle-label\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewbox=\"0 0 24 24\" version=\"1.2\" baseprofile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/label><input type=\"checkbox\"  id=\"ez-toc-cssicon-toggle-item-6a2ac449ec8c4\"  aria-label=\"Toggle\" \/><nav><ul class='ez-toc-list ez-toc-list-level-1' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/www.gbase8.cn\/en\/2602\/#%E5%88%86%E6%9E%90\" >Analyse<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/www.gbase8.cn\/en\/2602\/#%E5%8E%9F%E5%A7%8B%E6%95%B0%E6%8D%AE%E7%99%BB%E5%BD%95%E4%BF%A1%E6%81%AF\" >\u539f\u59cb\u6570\u636e\u767b\u5f55\u4fe1\u606f<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/www.gbase8.cn\/en\/2602\/#%E6%8B%BF%E5%88%B0%E6%9C%AC%E5%9C%B0%E7%99%BB%E5%BD%95%E7%9A%84%E4%B8%8B%E6%AC%A1%E7%99%BB%E5%BD%95%E4%BF%A1%E6%81%AF\" >\u62ff\u5230\u672c\u5730\u767b\u5f55\u7684\u4e0b\u6b21\u767b\u5f55\u4fe1\u606f<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/www.gbase8.cn\/en\/2602\/#%E8%AE%A1%E7%AE%97%E7%99%BB%E5%BD%95%E6%97%B6%E9%97%B4%E5%B7%AE%E8%B7%9D\" >\u8ba1\u7b97\u767b\u5f55\u65f6\u95f4\u5dee\u8ddd<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/www.gbase8.cn\/en\/2602\/#%E8%8E%B7%E5%BE%97%E8%BF%9E%E7%BB%AD%E7%99%BB%E5%BD%95%E5%A4%A9%E6%95%B0\" >\u83b7\u5f97\u8fde\u7eed\u767b\u5f55\u5929\u6570<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/www.gbase8.cn\/en\/2602\/#%E8%AE%A1%E7%AE%97%E8%BF%9E%E7%BB%AD%E7%99%BB%E5%BD%95%E4%B8%AD%E6%96%AD%E6%AC%A1%E6%95%B0\" >\u8ba1\u7b97\u8fde\u7eed\u767b\u5f55\u4e2d\u65ad\u6b21\u6570<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/www.gbase8.cn\/en\/2602\/#%E8%AE%A1%E7%AE%97%E6%AF%8F%E6%AC%A1%E4%B8%AD%E6%96%AD%E5%86%85%E7%9A%84%E8%BF%9E%E7%BB%AD%E7%99%BB%E5%BD%95%E9%97%B4%E9%9A%94\" >\u8ba1\u7b97\u6bcf\u6b21\u4e2d\u65ad\u5185\u7684\u8fde\u7eed\u767b\u5f55\u95f4\u9694<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/www.gbase8.cn\/en\/2602\/#%E5%BE%97%E5%88%B0%E6%9C%80%E9%95%BF%E7%9A%84%E8%BF%9E%E7%BB%AD%E7%99%BB%E5%BD%95%E9%97%B4%E9%9A%94\" >\u5f97\u5230\u6700\u957f\u7684\u8fde\u7eed\u767b\u5f55\u95f4\u9694<\/a><\/li><\/ul><\/nav><\/div>\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E5%88%86%E6%9E%90\"><\/span>Analyse<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>\u9996\u5148\u660e\u786e\uff0c\u767b\u5f55\u662f\u5426\u53ea\u8003\u8651\u5929\uff0c\u4e0d\u8003\u8651\u65f6\u95f4\u3002\u4e5f\u5c31\u662f\u53ea\u8981\u8de8\u5929\u5c31\u7b971\u5929\uff0c\u54ea\u6015\u4e2d\u95f4\u53ea\u95f4\u9694\u4e861\u79d2\u3002\u6bd4\u59822020-01-01 23:59:59 - 2020-01-02 00:00:00\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>gbase&gt; select datediff('2020-01-01 23:59:59','2020-01-02 00:00:00');\n+-------------------------------------------------------+\n| datediff('2020-01-01 23:59:59','2020-01-02 00:00:00') |\n+-------------------------------------------------------+\n|                                                    -1 |\n+-------------------------------------------------------+\n1 row in set (Elapsed: 00:00:00.00)\n<\/code><\/pre>\n\n\n\n<p>\u8fd9\u6d89\u53ca\u5230\u4e86\u8ba1\u7b97\u65b9\u6cd5\uff0c\u5982\u679c\u662f\u5929\uff0c\u90a3\u4e48\u7528datediff\u5c31\u53ef\u4ee5\u4e86\u3002 \u5982\u679c\u662f24\u5c0f\u65f6\uff0c\u90a3\u4e48\u5c31\u5f97\u7528\u79d2\u6765\u8ba1\u7b97\uff0c\u4e5f\u5c31\u662f\u7528timestampdiff\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>gbase&gt; select timestampdiff(hour,'2020-01-01 23:59:59','2020-01-02 00:00:00')diff;\n+------+\n| diff |\n+------+\n|    0 |\n+------+\n1 row in set (Elapsed: 00:00:00.00)\n\ngbase&gt; select timestampdiff(minute,'2020-01-01 23:59:59','2020-01-02 00:00:00')diff;\n+------+\n| diff |\n+------+\n|    0 |\n+------+\n1 row in set (Elapsed: 00:00:00.00)\n\ngbase&gt; select timestampdiff(second,'2020-01-01 23:59:59','2020-01-02 00:00:00')diff;\n+------+\n| diff |\n+------+\n|    1 |\n+------+\n1 row in set (Elapsed: 00:00:00.00)\n<\/code><\/pre>\n\n\n\n<p>\u6839\u636e\u7c92\u5ea6\u4e0d\u540c\uff0c\u5982\u679c\u662f\u5929\uff0cdatediff\u5373\u53ef\u3002 \u5982\u679c\u662f24\u5c0f\u65f6\uff0c\u90a3\u4e48\u7528timestampdiff\u7684hour\u5373\u53ef\u3002\u603b\u4e4b\u8fd9\u4e2a\u5fc5\u987b\u660e\u786e\u3002<\/p>\n\n\n\n<p>\u56e0\u4e3a\u9898\u76ee\u6ca1\u6709\u8bf4\uff0c\u540e\u9762\u6211\u4eec\u4ee5\u9ed8\u8ba4\u7684\u3010\u5929\u3011\u4e3a\u57fa\u672c\u7c92\u5ea6\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E5%8E%9F%E5%A7%8B%E6%95%B0%E6%8D%AE%E7%99%BB%E5%BD%95%E4%BF%A1%E6%81%AF\"><\/span>\u539f\u59cb\u6570\u636e\u767b\u5f55\u4fe1\u606f<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>\u672c\u4fe1\u606f\u5305\u62ec\u4e86\u4e00\u5929\u5185\u591a\u6b21\u767b\u5f55\uff0c\u4e0d\u540c\u65f6\u95f4\u767b\u5f55\u7b49\u60c5\u51b5\u3002\u6ce8\u610f\uff0c\u5982\u4e0b\u7279\u7279\u610f\u6784\u9020\u4e861\u4e2a\u6708\u7684\u4e2d\u65ad\u767b\u5f55\u65f6\u95f4\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>create table test_login(user_id int,login_date timestamp);\n \ninsert into test_login values (1,'2020-01-01 00:01:00');\ninsert into test_login values (1,'2020-01-01 00:02:00');\ninsert into test_login values (1,'2020-01-01 00:03:00');\ninsert into test_login values (1,'2020-01-02 00:03:00');\ninsert into test_login values (1,'2020-01-05 00:03:00');\ninsert into test_login values (1,'2020-01-07 00:03:00');\ninsert into test_login values (1,'2020-01-11 00:03:00');\ninsert into test_login values (1,'2020-01-12 00:03:00');\ninsert into test_login values (1,'2020-01-13 00:03:00');\ninsert into test_login values (1,'2020-01-14 00:03:00');\ninsert into test_login values (1,'2020-01-17 00:03:00');\ninsert into test_login values (1,'2020-01-18 00:03:00');\ninsert into test_login values (1,'2020-01-19 00:03:00');\ninsert into test_login values (1,'2020-01-22 00:03:00');\ninsert into test_login values (1,'2020-02-22 00:03:00');\ninsert into test_login values (1,'2020-03-22 00:03:00');\ninsert into test_login values (1,'2020-03-23 00:03:00');\n \ninsert into test_login values (2,'2020-01-01 00:04:00');\ninsert into test_login values (2,'2020-01-01 00:05:00');\ninsert into test_login values (2,'2020-01-01 00:06:00');\ninsert into test_login values (2,'2020-01-02 00:06:00');\ninsert into test_login values (2,'2020-01-07 00:06:00');\ninsert into test_login values (2,'2020-01-11 00:06:00');\ninsert into test_login values (2,'2020-01-12 00:06:00');\ninsert into test_login values (2,'2020-01-14 00:06:00');\ninsert into test_login values (2,'2020-01-18 00:06:00');\ninsert into test_login values (2,'2020-01-19 00:06:00');\ninsert into test_login values (2,'2020-01-22 00:06:00');<\/code><\/pre>\n\n\n\n<p>\u67e5\u770b\u539f\u59cb\u6570\u636e<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>gbase&gt; select * from test_login;\n+---------+---------------------+\n| user_id | login_date          |\n+---------+---------------------+\n|       1 | 2020-01-01 00:01:00 |\n|       1 | 2020-01-01 00:02:00 |\n|       1 | 2020-01-01 00:03:00 |\n|       1 | 2020-01-02 00:03:00 |\n|       1 | 2020-01-05 00:03:00 |\n|       1 | 2020-01-07 00:03:00 |\n|       1 | 2020-01-11 00:03:00 |\n|       1 | 2020-01-12 00:03:00 |\n|       1 | 2020-01-13 00:03:00 |\n|       1 | 2020-01-14 00:03:00 |\n|       1 | 2020-01-17 00:03:00 |\n|       1 | 2020-01-18 00:03:00 |\n|       1 | 2020-01-19 00:03:00 |\n|       1 | 2020-01-22 00:03:00 |\n|       1 | 2020-02-22 00:03:00 |\n|       1 | 2020-03-22 00:03:00 |\n|       1 | 2020-03-23 00:03:00 |\n|       2 | 2020-01-01 00:04:00 |\n|       2 | 2020-01-01 00:05:00 |\n|       2 | 2020-01-01 00:06:00 |\n|       2 | 2020-01-02 00:06:00 |\n|       2 | 2020-01-07 00:06:00 |\n|       2 | 2020-01-11 00:06:00 |\n|       2 | 2020-01-12 00:06:00 |\n|       2 | 2020-01-14 00:06:00 |\n|       2 | 2020-01-18 00:06:00 |\n|       2 | 2020-01-19 00:06:00 |\n|       2 | 2020-01-22 00:06:00 |\n+---------+---------------------+\n28 rows in set (Elapsed: 00:00:00.00)\n<\/code><\/pre>\n\n\n\n<p>\u5982\u4e0b\u6211\u4eec\u5148\u6309\u7167\u4e00\u6b65\u6b65\u7684\u5206\u6790\uff0c\u89e3\u6790\u6574\u4e2a\u6b65\u9aa4\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E6%8B%BF%E5%88%B0%E6%9C%AC%E5%9C%B0%E7%99%BB%E5%BD%95%E7%9A%84%E4%B8%8B%E6%AC%A1%E7%99%BB%E5%BD%95%E4%BF%A1%E6%81%AF\"><\/span>\u62ff\u5230\u672c\u5730\u767b\u5f55\u7684\u4e0b\u6b21\u767b\u5f55\u4fe1\u606f<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>\u901a\u8fc7lead\u51fd\u6570\uff0c\u53ef\u4ee5\u62ff\u5230\u4e0b\u4e00\u884c\u7684\u6570\u636e\u4fe1\u606f\u3002\u5176\u4e2d\u5fc5\u987b\u7528user_id\u505apartition,\u56e0\u4e3a\u662f\u591a\u4eba\u3002\u53e6\u5916\u8981\u901a\u8fc7\u767b\u5f55\u4fe1\u606f\u6b63\u5411\u6392\u5e8f\uff0c\u4ee5\u4fbf\u62ff\u5230\u4e0a\u4e00\u6b21\u7684\u3002\u6700\u7ec8\u7528<\/p>\n\n\n\n<p>lag(login_date)over(partition by user_id order by login_date) login_date_next<\/p>\n\n\n\n<p>\u62ff\u5230\u4e0a\u4e00\u6b21\u7684\u767b\u5f55\u65f6\u95f4 login_date_last\u3002 \u6700\u540e\u4e00\u6b21\u767b\u5f55\u7684\u4e0b\u4e00\u6b21\u4e3aNULL\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>gbase&gt; create table test_login_last as select user_id,login_date,lag(login_date)over(partition by user_id order by login_date) login_date_last from test_login order by user_id,login_date;\nQuery OK, 25 rows affected (Elapsed: 00:00:01.07)\n\ngbase&gt; select * from test_login_last;\n+---------+---------------------+---------------------+\n| user_id | login_date          | login_date_last     |\n+---------+---------------------+---------------------+\n|       1 | 2020-01-01 00:01:00 |                NULL |\n|       1 | 2020-01-01 00:02:00 | 2020-01-01 00:01:00 |\n|       1 | 2020-01-01 00:03:00 | 2020-01-01 00:02:00 |\n|       1 | 2020-01-02 00:03:00 | 2020-01-01 00:03:00 |\n|       1 | 2020-01-05 00:03:00 | 2020-01-02 00:03:00 |\n|       1 | 2020-01-07 00:03:00 | 2020-01-05 00:03:00 |\n|       1 | 2020-01-11 00:03:00 | 2020-01-07 00:03:00 |\n|       1 | 2020-01-12 00:03:00 | 2020-01-11 00:03:00 |\n|       1 | 2020-01-13 00:03:00 | 2020-01-12 00:03:00 |\n|       1 | 2020-01-14 00:03:00 | 2020-01-13 00:03:00 |\n|       1 | 2020-01-17 00:03:00 | 2020-01-14 00:03:00 |\n|       1 | 2020-01-18 00:03:00 | 2020-01-17 00:03:00 |\n|       1 | 2020-01-19 00:03:00 | 2020-01-18 00:03:00 |\n|       1 | 2020-01-22 00:03:00 | 2020-01-19 00:03:00 |\n|       1 | 2020-02-22 00:03:00 | 2020-01-22 00:03:00 |\n|       1 | 2020-03-22 00:03:00 | 2020-02-22 00:03:00 |\n|       1 | 2020-03-23 00:03:00 | 2020-03-22 00:03:00 |\n|       2 | 2020-01-01 00:04:00 |                NULL |\n|       2 | 2020-01-01 00:05:00 | 2020-01-01 00:04:00 |\n|       2 | 2020-01-01 00:06:00 | 2020-01-01 00:05:00 |\n|       2 | 2020-01-02 00:06:00 | 2020-01-01 00:06:00 |\n|       2 | 2020-01-07 00:06:00 | 2020-01-02 00:06:00 |\n|       2 | 2020-01-11 00:06:00 | 2020-01-07 00:06:00 |\n|       2 | 2020-01-12 00:06:00 | 2020-01-11 00:06:00 |\n|       2 | 2020-01-14 00:06:00 | 2020-01-12 00:06:00 |\n|       2 | 2020-01-18 00:06:00 | 2020-01-14 00:06:00 |\n|       2 | 2020-01-19 00:06:00 | 2020-01-18 00:06:00 |\n|       2 | 2020-01-22 00:06:00 | 2020-01-19 00:06:00 |\n+---------+---------------------+---------------------+\n28 rows in set (Elapsed: 00:00:00.01)\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E8%AE%A1%E7%AE%97%E7%99%BB%E5%BD%95%E6%97%B6%E9%97%B4%E5%B7%AE%E8%B7%9D\"><\/span>\u8ba1\u7b97\u767b\u5f55\u65f6\u95f4\u5dee\u8ddd<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>\u8ba1\u7b97\u672c\u6b21\u767b\u5f55\u548c\u4e0a\u6b21\u767b\u5f55\u7684\u65f6\u95f4\u5dee\uff0c\u8fd9\u91cc\u7528datediff\u8fdb\u884c\uff0c\u5982\u679c\u662f\u5176\u5b83\u7c92\u5ea6\uff0c\u8bf7\u53c2\u8003\u7b2c\u4e00\u8282\u7684\u4ecb\u7ecd\u3002<\/p>\n\n\n\n<p>\u83b7\u5f97\u4e86diff\u5b57\u6bb5\uff0c\u5185\u5bb9\u683c\u5f0f2\u4e2a\u65f6\u95f4\u76f8\u5dee\u7684\u3010\u5929\u6570\u3011\u3002\u6ce8\u610f\u672c\u4f8b\u4e2d\uff0c\u4e00\u5929\u5185\u7684\u591a\u6b21\u767b\u5f55\u7684\u5929\u6570\u5dee\u8ddd\u662f0.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>gbase&gt; create table test_login_diff as select user_id,login_date,login_date_last,datediff(login_date,login_date_last)diff from test_login_last;\nQuery OK, 25 rows affected (Elapsed: 00:00:00.86)\n\ngbase&gt; select * from test_login_diff;\n+---------+---------------------+---------------------+------+\n| user_id | login_date          | login_date_last     | diff |\n+---------+---------------------+---------------------+------+\n|       1 | 2020-01-01 00:01:00 |                NULL | NULL |\n|       1 | 2020-01-01 00:02:00 | 2020-01-01 00:01:00 |    0 |\n|       1 | 2020-01-01 00:03:00 | 2020-01-01 00:02:00 |    0 |\n|       1 | 2020-01-02 00:03:00 | 2020-01-01 00:03:00 |    1 |\n|       1 | 2020-01-05 00:03:00 | 2020-01-02 00:03:00 |    3 |\n|       1 | 2020-01-07 00:03:00 | 2020-01-05 00:03:00 |    2 |\n|       1 | 2020-01-11 00:03:00 | 2020-01-07 00:03:00 |    4 |\n|       1 | 2020-01-12 00:03:00 | 2020-01-11 00:03:00 |    1 |\n|       1 | 2020-01-13 00:03:00 | 2020-01-12 00:03:00 |    1 |\n|       1 | 2020-01-14 00:03:00 | 2020-01-13 00:03:00 |    1 |\n|       1 | 2020-01-17 00:03:00 | 2020-01-14 00:03:00 |    3 |\n|       1 | 2020-01-18 00:03:00 | 2020-01-17 00:03:00 |    1 |\n|       1 | 2020-01-19 00:03:00 | 2020-01-18 00:03:00 |    1 |\n|       1 | 2020-01-22 00:03:00 | 2020-01-19 00:03:00 |    3 |\n|       1 | 2020-02-22 00:03:00 | 2020-01-22 00:03:00 |   31 |\n|       1 | 2020-03-22 00:03:00 | 2020-02-22 00:03:00 |   29 |\n|       1 | 2020-03-23 00:03:00 | 2020-03-22 00:03:00 |    1 |\n|       2 | 2020-01-01 00:04:00 |                NULL | NULL |\n|       2 | 2020-01-01 00:05:00 | 2020-01-01 00:04:00 |    0 |\n|       2 | 2020-01-01 00:06:00 | 2020-01-01 00:05:00 |    0 |\n|       2 | 2020-01-02 00:06:00 | 2020-01-01 00:06:00 |    1 |\n|       2 | 2020-01-07 00:06:00 | 2020-01-02 00:06:00 |    5 |\n|       2 | 2020-01-11 00:06:00 | 2020-01-07 00:06:00 |    4 |\n|       2 | 2020-01-12 00:06:00 | 2020-01-11 00:06:00 |    1 |\n|       2 | 2020-01-14 00:06:00 | 2020-01-12 00:06:00 |    2 |\n|       2 | 2020-01-18 00:06:00 | 2020-01-14 00:06:00 |    4 |\n|       2 | 2020-01-19 00:06:00 | 2020-01-18 00:06:00 |    1 |\n|       2 | 2020-01-22 00:06:00 | 2020-01-19 00:06:00 |    3 |\n+---------+---------------------+---------------------+------+\n28 rows in set (Elapsed: 00:00:00.01)\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E8%8E%B7%E5%BE%97%E8%BF%9E%E7%BB%AD%E7%99%BB%E5%BD%95%E5%A4%A9%E6%95%B0\"><\/span>\u83b7\u5f97\u8fde\u7eed\u767b\u5f55\u5929\u6570<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>\u8fde\u7eed\u767b\u5f55\uff0c\u6309\u9898\u76ee\u8981\u6c42\uff0c\u662f\u95f4\u9694\u65f6\u95f4\u5c0f\u4e8e\u7b49\u4e8e3\u3002\u56e0\u4e3a\u4e00\u4e2a\u4eba\u53ef\u4ee5\u51fa\u73b0\u591a\u6b21\u767b\u5f55\u4e2d\u65ad\uff0c\u800c\u6bcf\u6b21\u4e2d\u65ad\u5c31\u90fd\u9700\u8981\u91cd\u65b0\u8ba1\u7b97\u3010\u8fde\u7eed\u3011\u5929\u6570\uff0c\u6240\u4ee5\u8981\u5148\u8ba1\u7b97\u5176\u4e2d\u65ad\u7684\u6b21\u6570\u3002<\/p>\n\n\n\n<p>\u8fd9\u91cc\u5c06\u767b\u5f55\u5929\u6570&gt;3\u7684\u8bbe\u7f6e\u4e3a1\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>gbase&gt; create  table test_login_flag1 as select *,if(diff&lt;=3,0,1) flag1 from test_login_diff order by user_id,login_date;\nQuery OK, 28 rows affected (Elapsed: 00:00:00.98)\n\ngbase&gt; select * from test_login_flag1;\n+---------+---------------------+---------------------+------+-------+\n| user_id | login_date          | login_date_last     | diff | flag1 |\n+---------+---------------------+---------------------+------+-------+\n|       1 | 2020-01-01 00:01:00 |                NULL | NULL |     1 |\n|       1 | 2020-01-01 00:02:00 | 2020-01-01 00:01:00 |    0 |     0 |\n|       1 | 2020-01-01 00:03:00 | 2020-01-01 00:02:00 |    0 |     0 |\n|       1 | 2020-01-02 00:03:00 | 2020-01-01 00:03:00 |    1 |     0 |\n|       1 | 2020-01-05 00:03:00 | 2020-01-02 00:03:00 |    3 |     0 |\n|       1 | 2020-01-07 00:03:00 | 2020-01-05 00:03:00 |    2 |     0 |\n|       1 | 2020-01-11 00:03:00 | 2020-01-07 00:03:00 |    4 |     1 |\n|       1 | 2020-01-12 00:03:00 | 2020-01-11 00:03:00 |    1 |     0 |\n|       1 | 2020-01-13 00:03:00 | 2020-01-12 00:03:00 |    1 |     0 |\n|       1 | 2020-01-14 00:03:00 | 2020-01-13 00:03:00 |    1 |     0 |\n|       1 | 2020-01-17 00:03:00 | 2020-01-14 00:03:00 |    3 |     0 |\n|       1 | 2020-01-18 00:03:00 | 2020-01-17 00:03:00 |    1 |     0 |\n|       1 | 2020-01-19 00:03:00 | 2020-01-18 00:03:00 |    1 |     0 |\n|       1 | 2020-01-22 00:03:00 | 2020-01-19 00:03:00 |    3 |     0 |\n|       1 | 2020-02-22 00:03:00 | 2020-01-22 00:03:00 |   31 |     1 |\n|       1 | 2020-03-22 00:03:00 | 2020-02-22 00:03:00 |   29 |     1 |\n|       1 | 2020-03-23 00:03:00 | 2020-03-22 00:03:00 |    1 |     0 |\n|       2 | 2020-01-01 00:04:00 |                NULL | NULL |     1 |\n|       2 | 2020-01-01 00:05:00 | 2020-01-01 00:04:00 |    0 |     0 |\n|       2 | 2020-01-01 00:06:00 | 2020-01-01 00:05:00 |    0 |     0 |\n|       2 | 2020-01-02 00:06:00 | 2020-01-01 00:06:00 |    1 |     0 |\n|       2 | 2020-01-07 00:06:00 | 2020-01-02 00:06:00 |    5 |     1 |\n|       2 | 2020-01-11 00:06:00 | 2020-01-07 00:06:00 |    4 |     1 |\n|       2 | 2020-01-12 00:06:00 | 2020-01-11 00:06:00 |    1 |     0 |\n|       2 | 2020-01-14 00:06:00 | 2020-01-12 00:06:00 |    2 |     0 |\n|       2 | 2020-01-18 00:06:00 | 2020-01-14 00:06:00 |    4 |     1 |\n|       2 | 2020-01-19 00:06:00 | 2020-01-18 00:06:00 |    1 |     0 |\n|       2 | 2020-01-22 00:06:00 | 2020-01-19 00:06:00 |    3 |     0 |\n+---------+---------------------+---------------------+------+-------+\n28 rows in set (Elapsed: 00:00:00.02)\n\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E8%AE%A1%E7%AE%97%E8%BF%9E%E7%BB%AD%E7%99%BB%E5%BD%95%E4%B8%AD%E6%96%AD%E6%AC%A1%E6%95%B0\"><\/span>\u8ba1\u7b97\u8fde\u7eed\u767b\u5f55\u4e2d\u65ad\u6b21\u6570<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>\u4e5f\u5c31\u662f\u5f53\u524d\u8bb0\u5f55\u4ee5\u524d\uff0c\u51fa\u73b0\u8fc7flag1=1\u7684sum\u503c\u3002<\/p>\n\n\n\n<p>sum(flag1)over(partition by user_id order by login_date) flag2<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>gbase&gt; create table test_login_flag2 as  select *,sum(flag1)over(partition by user_id order by login_date) flag2 from test_login_flag1;\nQuery OK, 28 rows affected (Elapsed: 00:00:01.26)\n\ngbase&gt; select * from test_login_flag2;\n+---------+---------------------+---------------------+------+-------+-------+\n| user_id | login_date          | login_date_last     | diff | flag1 | flag2 |\n+---------+---------------------+---------------------+------+-------+-------+\n|       1 | 2020-01-01 00:01:00 |                NULL | NULL |     1 |     1 |\n|       1 | 2020-01-01 00:02:00 | 2020-01-01 00:01:00 |    0 |     0 |     1 |\n|       1 | 2020-01-01 00:03:00 | 2020-01-01 00:02:00 |    0 |     0 |     1 |\n|       1 | 2020-01-02 00:03:00 | 2020-01-01 00:03:00 |    1 |     0 |     1 |\n|       1 | 2020-01-05 00:03:00 | 2020-01-02 00:03:00 |    3 |     0 |     1 |\n|       1 | 2020-01-07 00:03:00 | 2020-01-05 00:03:00 |    2 |     0 |     1 |\n|       1 | 2020-01-11 00:03:00 | 2020-01-07 00:03:00 |    4 |     1 |     2 |\n|       1 | 2020-01-12 00:03:00 | 2020-01-11 00:03:00 |    1 |     0 |     2 |\n|       1 | 2020-01-13 00:03:00 | 2020-01-12 00:03:00 |    1 |     0 |     2 |\n|       1 | 2020-01-14 00:03:00 | 2020-01-13 00:03:00 |    1 |     0 |     2 |\n|       1 | 2020-01-17 00:03:00 | 2020-01-14 00:03:00 |    3 |     0 |     2 |\n|       1 | 2020-01-18 00:03:00 | 2020-01-17 00:03:00 |    1 |     0 |     2 |\n|       1 | 2020-01-19 00:03:00 | 2020-01-18 00:03:00 |    1 |     0 |     2 |\n|       1 | 2020-01-22 00:03:00 | 2020-01-19 00:03:00 |    3 |     0 |     2 |\n|       1 | 2020-02-22 00:03:00 | 2020-01-22 00:03:00 |   31 |     1 |     3 |\n|       1 | 2020-03-22 00:03:00 | 2020-02-22 00:03:00 |   29 |     1 |     4 |\n|       1 | 2020-03-23 00:03:00 | 2020-03-22 00:03:00 |    1 |     0 |     4 |\n|       2 | 2020-01-01 00:04:00 |                NULL | NULL |     1 |     1 |\n|       2 | 2020-01-01 00:05:00 | 2020-01-01 00:04:00 |    0 |     0 |     1 |\n|       2 | 2020-01-01 00:06:00 | 2020-01-01 00:05:00 |    0 |     0 |     1 |\n|       2 | 2020-01-02 00:06:00 | 2020-01-01 00:06:00 |    1 |     0 |     1 |\n|       2 | 2020-01-07 00:06:00 | 2020-01-02 00:06:00 |    5 |     1 |     2 |\n|       2 | 2020-01-11 00:06:00 | 2020-01-07 00:06:00 |    4 |     1 |     3 |\n|       2 | 2020-01-12 00:06:00 | 2020-01-11 00:06:00 |    1 |     0 |     3 |\n|       2 | 2020-01-14 00:06:00 | 2020-01-12 00:06:00 |    2 |     0 |     3 |\n|       2 | 2020-01-18 00:06:00 | 2020-01-14 00:06:00 |    4 |     1 |     4 |\n|       2 | 2020-01-19 00:06:00 | 2020-01-18 00:06:00 |    1 |     0 |     4 |\n|       2 | 2020-01-22 00:06:00 | 2020-01-19 00:06:00 |    3 |     0 |     4 |\n+---------+---------------------+---------------------+------+-------+-------+\n28 rows in set (Elapsed: 00:00:00.00)\n\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E8%AE%A1%E7%AE%97%E6%AF%8F%E6%AC%A1%E4%B8%AD%E6%96%AD%E5%86%85%E7%9A%84%E8%BF%9E%E7%BB%AD%E7%99%BB%E5%BD%95%E9%97%B4%E9%9A%94\"><\/span>\u8ba1\u7b97\u6bcf\u6b21\u4e2d\u65ad\u5185\u7684\u8fde\u7eed\u767b\u5f55\u95f4\u9694<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>\u6839\u636euser_id\u548cflag2, \u8ba1\u7b97\u6700\u5927\u548c\u6700\u5c0f\u767b\u5f55\u65f6\u95f4\u7684\u5dee\u8ddd\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>gbase&gt; create table test_login_continue as select user_id,flag2,datediff(max(login_date),min(login_date)) cont from test_login_flag2 group by user_id,flag2 order by user_id,flag2;\nQuery OK, 8 rows affected (Elapsed: 00:00:01.11)\n\ngbase&gt; select * from test_login_continue;\n+---------+-------+------+\n| user_id | flag2 | cont |\n+---------+-------+------+\n|       1 |     1 |    6 |\n|       1 |     2 |   11 |\n|       1 |     3 |    0 |\n|       1 |     4 |    1 |\n|       2 |     1 |    1 |\n|       2 |     2 |    0 |\n|       2 |     3 |    3 |\n|       2 |     4 |    4 |\n+---------+-------+------+\n8 rows in set (Elapsed: 00:00:00.01)\n\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E5%BE%97%E5%88%B0%E6%9C%80%E9%95%BF%E7%9A%84%E8%BF%9E%E7%BB%AD%E7%99%BB%E5%BD%95%E9%97%B4%E9%9A%94\"><\/span>\u5f97\u5230\u6700\u957f\u7684\u8fde\u7eed\u767b\u5f55\u95f4\u9694<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>\u8fd9\u91cc\u6839\u636e\u9898\u76ee\u8981\u6c42\uff0c\u9700\u8981+1\uff0c1\u53f7\u52304\u53f7\u95f4\u96943\u5929\uff0c\u8ba1\u7b97\u4e3a4\u5929\u8fde\u7eed\u767b\u5f55\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>gbase&gt; select user_id,max(cont)+1 cont from test_login_continue group by user_id order by user_id;\n+---------+------+\n| user_id | cont |\n+---------+------+\n|       1 |   12 |\n|       2 |    5 |\n+---------+------+\n2 rows in set (Elapsed: 00:00:00.15)\n<\/code><\/pre>","protected":false},"excerpt":{"rendered":"<p>\u6839\u636e\u7f51\u53cb\u7684\u4e00\u4e2a\u9e45\u5382\u9762\u8bd5\u9898\u7531\u6765\uff0c\u539f\u59cb\u5185\u5bb9\u6458\u5f55\u5982\u4e0b\uff1a\u6c42\u6bcf\u4e2a\u7528\u6237\u7684\u6700\u957f\u8fde\u7eed\u767b\u5f55\u5929\u6570\uff0c\u4e24\u4e2a\u65e5\u671f\u7684\u95f4\u9694\u5c0f\u4e8e\u6216\u7b49\u4e8e 3 \u5747\u89c6\u4e3a\u8fde\u7eed\u767b\u5f55\u3002\u6bd4\u5982 01-01 \u53f7\u767b\u5f55\uff0c\u6700\u8fd1\u7684\u4e0b\u4e00\u6b21\u767b\u5f55\u662f 01-04 \u53f7\uff0c\u4e24\u4e2a\u65e5\u671f\u7684\u95f4\u9694\u7b49\u4e8e 3 \u5929\uff0c\u56e0\u6b64\u8fd9\u4e24\u4e2a\u65e5\u671f\u4e4b\u95f4\u7684\u5929\u6570\u90fd\u7b97\u4f5c\u6d3b\u8dc3\u5929\u6570\uff0c\u4e00\u5171 4 \u5929\u3002<\/p>","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[67,81],"class_list":["post-2602","post","type-post","status-publish","format-standard","hentry","category-gbase8a","tag-67","tag-81"],"_links":{"self":[{"href":"https:\/\/www.gbase8.cn\/en\/wp-json\/wp\/v2\/posts\/2602","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.gbase8.cn\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.gbase8.cn\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.gbase8.cn\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.gbase8.cn\/en\/wp-json\/wp\/v2\/comments?post=2602"}],"version-history":[{"count":12,"href":"https:\/\/www.gbase8.cn\/en\/wp-json\/wp\/v2\/posts\/2602\/revisions"}],"predecessor-version":[{"id":7562,"href":"https:\/\/www.gbase8.cn\/en\/wp-json\/wp\/v2\/posts\/2602\/revisions\/7562"}],"wp:attachment":[{"href":"https:\/\/www.gbase8.cn\/en\/wp-json\/wp\/v2\/media?parent=2602"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.gbase8.cn\/en\/wp-json\/wp\/v2\/categories?post=2602"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.gbase8.cn\/en\/wp-json\/wp\/v2\/tags?post=2602"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}