当前位置: 首页 > news >正文

clickhouse MPPDB数据库 实现复杂功能的SQL示例

环境:

clickhouse-client -m -h CH01--port 9001 -d test

伪MAC判断

CK通过SQL判断假MAC的示例:  select has(['2','6','A','E','a','e'],SUBSTRING('03-92-26-5B-13-02',2,1) )将MAC地址替换为字段名即可

1.相似车分析

1.1执行

SELECT length(arrayFilter((x, y) -> (x != y), arrayMap(x -> substringUTF8(HPHM, x + 1, 1), range(7)), b)) AS diffLen,HPHMFROM
(SELECT PLATE_NO AS HPHM,['滇', '0', '1', 'A', '2', '2', '1'] AS b from CAR_DETECT_RL)WHERE diffLen < 2 limit 10;SELECT length(arrayFilter((x, y) -> (x != y), arrayMap(x -> substringUTF8(HPHM, x + 1,1), range(7)), b)) AS diffLen,HPHM FROM (SELECT '滇04A221' AS HPHM,['滇', '0', '1', 'A', '2', '2', '1'] AS b from numbers(3)) WHERE diffLen < 2 limit 10;

1.2结果

┌─diffLen─┬─HPHM─────┐
│       1 │ 滇04A221 │
└─────────┴──────────┘
┌─diffLen─┬─HPHM─────┐
│       1 │ 滇C1A221 │
└─────────┴──────────┘
┌─diffLen─┬─HPHM─────┐
│       1 │ 滇01AD21 │
└─────────┴──────────┘

2.车辆轨迹搜车

2.1执行

--判断车辆实际运行轨迹 是否包含指定的运行轨迹
SELECTPLATE_NO,length(b) AS len2,indexOf(a, b[1]) AS idx,length(a) AS len1,if(len1 < (len2 + idx), 100, length(arrayFilter(x -> ((a[idx + x]) != (b[x + 1])), range(len2)))) AS diffLen
FROM
(select PLATE_NO,groupArray(DEVICE_ID) AS a,arrayDistinct(['4401000000131000301', '494583076246736505','4401000000131000320']) AS b from (SELECT PLATE_NO,DEVICE_IDFROM CAR_DETECT_RL where PASS_TIME between '2019-07-01 00:00:00' and '2019-07-01 23:59:59' order by PASS_TIME) t group by PLATE_NO
) where diffLen > 2;SELECT PLATE_NO,length(b) AS len2,indexOf(a, b[1]) AS idx,length(a) AS len1,if(len1 < (len2 + idx), 100, length(arrayFilter(x -> ((a[idx + x]) != (b[x + 1])), range(len2)))) AS diffLen FROM ( select '浙4C12C2' as PLATE_NO,array('4401000000131000301', '494583076246736505','4401000000131000320') AS a,arrayDistinct(['4401000000131000301', '494583076246736505','4401000000131000320']) AS b ) where diffLen > 2;

2.2结果

┌─PLATE_NO─┬─len2─┬─idx─┬─len1─┬─diffLen─┐
│ 浙4C12C2 │    3 │  11 │   15 │       1 │
│ 湘2D44DB │    3 │   3 │    9 │       1 │
│ 鲁B1BB1D │    3 │   4 │    7 │       1 │
│ 鲁B1CA10 │    3 │   2 │   13 │       1 │
│ 湘BAB2A2 │    3 │  11 │   16 │       1 │
│ 赣A022B2 │    3 │   4 │   10 │       1 │
│ 鲁D2B410 │    3 │   7 │   11 │       1 │
│ 云DD002C │    3 │  11 │   15 │       1 │

2.3 测试SQL

SELECT a,b,if(len1<len2+idx,100,length(arrayFilter(x-> (a[idx+x] != b[x+1]),range(len2)))) as diffLen  
FROM ( SELECT  arrayDistinct(['A', 'B', 'C', 'D','D','D', 'H', 'F', 'G']) AS a,arrayDistinct(['B', 'C', 'D', 'E', 'F']) AS b,length(a) AS len1,length(b) AS len2,indexOf(a,b[1]) as idx) 
where diffLen<2;

http://www.mrgr.cn/news/7898.html

相关文章:

  • 【Qt笔记】QLabel控件详解
  • 【Leetcode 1832 】 判断句子是否为全字母句 —— 忙忙碌碌哈希表不如一行代码速度快
  • 数学建模之数据分析【九】:数据清理概述
  • Marimo:下一代Python编程环境,颠覆传统Jupyter笔记本,自动化执行所有依赖代码块,告别繁琐手动操作
  • CUDA指南-CUDA简介与开发环境搭建
  • unity AssetBundle 使用_什么是AssetBundle_导入必要的插件_创建AssetBundles_AB包资源下载_大文件下载
  • python在字符串指定位置添加字符至固定长度
  • 初赛笔记1
  • 深入解析HarmonyOS中的媒体查询及其高级用法
  • Apache Commons-IO 库
  • (十五)Flink 内存管理机制
  • 【ubuntu24.04】docker安装
  • 编程小白到大神之路
  • lucene搜索关键词错误
  • C# 多线程
  • 宁德时代25届校招网申SHL测评:数字推理25分钟+言语推理19分钟
  • 设计模式-结构性模式-桥接模式
  • 如何利用命令模式实现一个手游后端架构?
  • WorkPlus:为企业内部打造高效沟通的顶级内部通讯软件
  • 亲测解决electron的Unhandled Rejection