mysql統計某列值連續出現次數小於五次的記錄
表原紀錄如下:
需求:找出age連續出現次數少於5次的所有記錄。
#建臨時表
CREATE TABLE dba.t3_temp AS
SELECT
cc.age,rownum,cc.orinum,cc.id,cc.name
FROM
(SELECT
aa.id,
aa.age,
aa.name,
aa.orinum,
IF(
(aa.age = @page),
@row := @row + 1,
@row := 1
)rownum,
@page := aa.age pn
FROM (
SELECT id,age,NAME,(@rowNum: [email protected]+1) AS orinum FROM
dba.t3 ib,
(SELECT
@row := 0,
@page := '000000') row1,
(SELECT (@rowNum :=0) ) bb )aa) cc
用途:將連續出現的age對應的rownum遞增,遇到新值時,rownum賦值為1.
orinum模擬的是行號。
該臨時表查詢效果如下:
--建個新表
CREATE TABLE dba.t3_new LIKE dba.t3;
ALTER TABLE dba.`t3_new` ADD group_idVARCHAR(100);
--儲存過程
實現原理:
查詢臨時表rownum為1的記錄數v_cnt,分為v_cnt個組。第一個rownum為1的行和第二個rownum為1的行之間(前閉後開)的記錄則為第一個組.依次類推。最後一個組資料特殊些,需要額外處理一下。將group_id及相應的資料插入到新表中。
DELIMITER // CREATE PROCEDURE p6() BEGIN DECLARE v_cnt INT DEFAULT 1; DECLARE v_N INT DEFAULT 1; DECLARE v_N2 INT; DECLARE v_cnt2 INT; SET v_N2 = v_N - 1; SELECT COUNT(*) INTO v_cnt FROM dba.`t3_temp` WHERE rownum = 1 ; SET v_cnt2 = v_cnt - 1; #插入前N個rownum為1的所有資料 WHILE v_N < v_cnt DO INSERT INTO dba.`t3_new`(group_id,age,NAME,id) SELECT v_N,age,NAME,id FROM dba.`t3_temp` WHERE orinum >=( SELECT orinum FROM dba.`t3_temp` WHERE rownum = 1 ORDER BY orinum LIMIT v_N2,1) AND orinum < ( SELECT orinum FROM dba.`t3_temp` WHERE rownum = 1 ORDER BY orinum LIMIT v_N,1 ); SET v_N = v_N + 1; SET v_N2 = v_N2 + 1; END WHILE; #插入最後一個rownum為1的資料 #select v_cnt; #select v_cnt2; INSERT INTO dba.`t3_new`(group_id,age,NAME,id) SELECT v_cnt,age,NAME,id FROM dba.`t3_temp` WHERE orinum >=( SELECT orinum FROM dba.`t3_temp` WHERE rownum = 1 ORDER BY orinum LIMIT v_cnt2,1) AND orinum <= ( SELECT orinum FROM dba.`t3_temp` ORDER BY orinum DESC LIMIT 1 ); END ; //
CALL p6();
--查詢連續出現相同age小於5次的記錄
SELECT age,COUNT(*)
FROM dba.`t3_new`
GROUP BY group_id,age
HAVING COUNT(*)<5;
效果如下:
--不當之處,歡迎指正。
相關推薦
mysql統計某列值連續出現次數小於五次的記錄
表原紀錄如下: 需求:找出age連續出現次數少於5次的所有記錄。 #建臨時表 CREATE TABLE dba.t3_temp AS SELECT cc.age,rownum,cc.orinum,cc.id,cc.name FROM (SELECT aa.id
查詢資料庫某個欄位相同值的出現次數大於兩次的列表
程式碼: select * from uav a where exists( select sn_number from uav where a.sn_number = sn_number group by sn
php統計一個一維陣列中,相同的值連續出現的最大次數
一維陣列: $array = [2,3,3,3,3,4,2,4,4,5,5,3,3,7,7,6,6,6,8,8,4,4,4,4,4,8,8,8,8,98,6,98,98]; 效果: Array ( [2] => 1 [3] => 4 [4] => 5 [5] =>
javascript計算陣列中某值的出現次數
需求 返回一個數組某值出現的次數 輸入:一個數組 輸出:需要計數的元素 程式碼 /* 傳入一個數組 返回一個數組某值出現的次數 */ const countOccurences
shell命令統計某列去重後的值
需求:根據MAC獲取,MAC對應的硬體版本和軟體版本。在根據硬體版本統計MAC的數量$ head test_1.txt00:07:67,EC2108,HWV010537P000000:07:63,Z83,ZNV861010P122500:07:67,EC6108V9U_ca_
求一個字符串中連續出現次數最多的子串
article 規律 生成 clu 一次 strong tor first sub 題目:求一個字符串中連續出現的次數最多的子串。 例如,字符串“abababc”,最多連續出現的為ab,連續出現三次。 思路: 例如字符串“abababc”,最多連續出現的為ab,連續出現
計數數組中值的出現次數
docs arr 每次 clas class color con data- 遞增 每次遇到數組中的特定值時,使用reduce()來遞增計數器。 1 const countOccurrences = (arr, value) => arr.reduce((a, v)
返回(統計)一個列表中出現次數最多的元素
clas 列表 元素 center enter ax1 叠代器 orm {} 首先定義一個函數 函數內逐行依次解釋為: #定義一個函數def max1(lt): dict1 = {} #建立一個空字典 s = set(lt)
python統計列表中某個元素出現次數
users = ['bobby1', 'bobby2', 'bobby3', 'bobby1', 'bobby2', 'bobby2' ]統計各個元素出現次數 1.傳統方法 user_dict = {} for user in users: if user not in user_d
獲取GridView中的某列值
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
mysql統計某段日期中某段時間的資料
中間的動態拼接是為了防止隔天查詢(如17:30-8:30),當然就收資料後要進行處理讓後在傳入 SELECT count(DISTINCT barcode) AS count,DATE_FORMAT(date, '%Y-%m-%d') AS ti FROM ag_cpparts WHERE DATE_
mysql設定某列資料自增1 及設定後insert寫法
+--------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-----
統計檔案內每個字元出現次數
package com.zyq.test; import java.io.*; import java.util.Set; import java.util.TreeMap; public class TsetCountCharacters { public st
python將檔案內容按照某列值重新排序
python實現將檔案內容按照某一列內容的大小值重新排序。 例如團檔案內容為: 現在講檔案內容按照第四列的值重新排序,形成: print(''.join(sorted(open('test.t
linux統計txt檔案中單詞出現次數並排序
檔案:a.txt 任務:統計該檔案中每一個單詞出現的次數,並按照出現頻率從大到小排序 sed 's/ /\n/g' "a.txt" | sort | uniq -c | sort -nr 解析: sed替換 sed 's/被替換的字串/新字串/[替換選項]' fil
Java統計一篇文章中出現次數最多的漢字或英文單詞 又出現次數的統計
思想是用到了Map集合的鍵唯一性儲存漢字或者單詞,單詞的獲取通過正則獲取: 統計類: import java.util.ArrayList; import java.util.Map; import java.util.Set; import java.util.Tree
Jquery中獲取table中某列值的方法
//獲取 table id=test123 第二列 文字值 ("#btnTest").click(function(){ $("#test123 tr td:nth-child(2)").each(function(){ alert($(this).tex
PostgreSQL中設定表中某列值自增或迴圈
在postgresql中,設定已存在的某列(num)值自增,可以用以下方法: //將表tb按name排序,利用row_number() over()查詢序號並將該列命名為rownum,建立新表t
mysql 查詢某時間段內連續n天登陸人數
//30多萬條資料0.4秒 不到,查詢某時間段內連續登陸n天的使用者,1132條 SET @wy=0; SELECT DISTINCT uid FROM (SELECT MAX(date)-MIN(date) less,uid FROM (SELECT date