zoukankan      html  css  js  c++  java
  • mysql 采样查询 / 间隔查询 / 跳跃查询的两种实现思路

    先创建一张测试表

    1 CREATE TABLE `test` (
    2   `id` int(11) DEFAULT NULL,
    3   `count` int(11) DEFAULT NULL
    4 ) ENGINE=InnoDB DEFAULT CHARSET=utf8

    插入测试数据

    1 insert into test (id, count) values(1000,1),(2000,2),(3000,3),(4000,4),(5000, 5),(6000,6),(7000,7),(8000,8),(9000,9); 
    2 insert into test (id, count) values(1100,1),(2100,2),(3100,3),(4100,4),(5100, 5),(6100,6),(7100,7),(8100,8),(9100,9);
    3 insert into test (id, count) values(1200,1),(2200,2),(3200,3),(4200,4),(5200, 5),(6200,6),(7200,7),(8200,8),(9200,9);
    4 insert into test (id, count) values(1300,1),(2300,2),(3300,3),(4300,4),(5300, 5),(6300,6),(7300,7),(8300,8),(9300,9);

    方法一:

    mysql> SELECT id, SUM(count) FROM test GROUP BY id DIV 1000;
    +------+------------+
    | id   | SUM(count) |
    +------+------------+
    | 1000 |          4 |
    | 2000 |          8 |
    | 3000 |         12 |
    | 4000 |         16 |
    | 5000 |         20 |
    | 6000 |         24 |
    | 7000 |         28 |
    | 8000 |         32 |
    | 9000 |         36 |
    +------+------------+
    9 rows in set (0.00 sec)

    这种方法通过group by将id根据[1000, 2000), [2000, 3000), [3000, 4000), [4000, 5000), [5000, 6000), [6000, 7000), [7000, 8000), [9000, 10000)分组,分组后的数据可以对其进行AVG()、MAX()、MIN()、SUM()、COUNT()聚合操作。

    方法二:

     1 mysql> SELECT id, count FROM test WHERE id MOD 1000 = 0;
     2 +------+-------+
     3 | id   | count |
     4 +------+-------+
     5 | 1000 |     1 |
     6 | 2000 |     2 |
     7 | 3000 |     3 |
     8 | 4000 |     4 |
     9 | 5000 |     5 |
    10 | 6000 |     6 |
    11 | 7000 |     7 |
    12 | 8000 |     8 |
    13 | 9000 |     9 |
    14 +------+-------+
    15 9 rows in set (0.00 sec)

    这种方法可以实现采样查询,但是缺点也很明显,比较适合采样字段连续的场景。

  • 相关阅读:
    洛谷P2798 爆弹虐场
    洛谷P1164 小A点菜(01背包求方案数)
    洛谷P1312 Mayan游戏
    洛谷P1514 引水入城
    2017-10-12 NOIP模拟赛
    洛谷P1038 神经网络
    洛谷P1607 [USACO09FEB]庙会班车Fair Shuttle
    洛谷P1378 油滴扩展
    Ionic+Angular实现中英国际化(附代码下载)
    Ionic+Angular+Express实现前后端交互使用HttpClient发送get请求数据并加载显示(附代码下载)
  • 原文地址:https://www.cnblogs.com/snowater/p/8343407.html
Copyright © 2011-2022 走看看