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

环境:

sql 复制代码
clickhouse-client -m -h CH01--port 9001 -d test

伪MAC判断

sql 复制代码
CK通过SQL判断假MAC的示例:  select has(['2','6','A','E','a','e'],SUBSTRING('03-92-26-5B-13-02',2,1) )

将MAC地址替换为字段名即可

1.相似车分析

1.1执行

sql 复制代码
SELECT length(arrayFilter((x, y) -> (x != y), arrayMap(x -> substringUTF8(HPHM, x + 1, 1), range(7)), b)) AS diffLen,HPHM
	FROM
(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结果

tex 复制代码
┌─diffLen─┬─HPHM─────┐
│       1 │ 滇04A221 │
└─────────┴──────────┘
┌─diffLen─┬─HPHM─────┐
│       1 │ 滇C1A221 │
└─────────┴──────────┘
┌─diffLen─┬─HPHM─────┐
│       1 │ 滇01AD21 │
└─────────┴──────────┘

2.车辆轨迹搜车

2.1执行

sql 复制代码
--判断车辆实际运行轨迹 是否包含指定的运行轨迹
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 PLATE_NO,groupArray(DEVICE_ID) AS a,arrayDistinct(['4401000000131000301', '494583076246736505','4401000000131000320']) 
    AS b from (
    	SELECT PLATE_NO,DEVICE_ID
    	FROM 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结果

tex 复制代码
┌─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

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;
相关推荐
会博通·代码搬运工几秒前
疾控档案落地难点:异构业务系统并存,高价值纸质凭证如何回流业务闭环
数据库·档案管理·档案管理系统·智能扫描设备·会博通
数智启示录2 分钟前
Apache Kafka Consumer 扩到 40 个仍不提速:Partition 上限锁死有效并行度 【Kafka合集】
数据库·经验分享·分布式·缓存·面试·kafka·apache
数智启示录9 分钟前
Apache Kafka 幂等 Producer 的边界:Exactly-Once 到了 MySQL 为什么失效 【Kafka合集】
数据库·经验分享·分布式·mysql·面试·kafka·apache
Java小白笔记11 分钟前
Java 实现阿里云 OSS 文件上传链路:普通上传、秒传、分片与断点续传
java·开发语言·数据库·spring·阿里云
—Miss. Z—12 分钟前
计算机三级数据库技术—填空题
数据库·mysql
润乾软件33 分钟前
SQLazy:从事件表中查出下一组的开始时刻
sql·sqlazy
数智启示录36 分钟前
Apache Kafka 同 Key 仍会乱序:从分区 Offset 到业务可见的四道边界 【Kafka 合集】
大数据·数据库·经验分享·分布式·面试·kafka·apache
烬羽1 小时前
给 Agent 一个检索式记忆:把对话历史存进 Milvus,该记的都记得
javascript·数据库·agent
星云API技术支持1 小时前
企业微信二次开发外部群:群聊数据与联系人信息如何建立关联
数据库·php·企业微信
我不是程序员三三1 小时前
桌面管理软件哪个最好?从一次上线翻车事故,拆解选型评估与配置落地全流程
数据库