解锁SQL无限可能 | 利用SQL实现13位条码检测算法

news2024/9/20 18:50:20

目录

0  需求分析

1 数据准备

2 问题分析

3 小结

数字化建设通关指南专栏原价99,现在活动价39.9,按照阶梯式增长,直到恢复原价


0  需求分析

算法:给定一个n位的数字字符串,取出这个条码字符串的前n-1位数字,用公式计算,看结果是都等于n位。

公式如下:

(1)将每个奇数位的数字相加得到S1

(2)将每个偶数位的数字相加得到S2

(3)用S1减去S2,将结果对10取模,然后计算绝对值。计算条码检查和的公式为

 abs(mod(s1-s2),10)

假设给定13位条码 :'2837232811227',按照上述规则进行验证。

1 数据准备

with check_sum as ( select '2837232811227' str )

2 问题分析

利用算法原理进行简单推导,看看具体是如何工作的

check_sum('283723281122')

=abs(mod((2+3++2+2+1+2) - (8+7+3+8+1+2),10))

=abs(mod(

(2-8+3-7+2-3+2-8+1-1+2-2),10

))

=abs(mod(

-17,10

))

=abs(-7) =7

第一步:先将字符串展开

with check_sum as (select '2837232811227' str)

select pos + 1 id
     , val
from check_sum
         lateral view posexplode(split(str, '')) tmp as pos, val
where val <> ''

 

第二步:计算前12行,奇数行与偶数行差值的累计值。即S1-S2

with check_sum as (select '2837232811227' str)
select id
          , case
                when id <= max_id - 1
                    then sum(case when mod(id, 2) = 0 then -val else val end) over (order by id) end s1_s2
     from (select pos + 1 id
                , val
                , max(pos + 1) over () max_id
           from check_sum
                    lateral view posexplode(split(str, '')) tmp as pos, val
           where val <> '') t;

 

第三步:计算  abs(mod(s1-s2),10)

with check_sum as (select '2837232811227' str)
select id
     , case
           when id = max_id - 1 then abs(mod(s1_s2, 10)) end mod_s1_s2
from (select id
           , max_id
           , val
           , case
                 when id <= max_id - 1
                     then sum(case when mod(id, 2) = 0 then -val else val end) over (order by id) end s1_s2
      from (select pos + 1              id
                 , val
                 , max(pos + 1) over () max_id
            from check_sum
                     lateral view posexplode(split(str, '')) tmp as pos, val
            where val <> '') t) t

3 小结

本文利用SQL分析了一种13位条码检测算法。关于此类利用SQL处理算法的问题很多,具体请参考我的“数字化建设通关指南”中的SQL进阶技巧,我把这些规律技巧进行了总结。

数字化建设通关指南
专栏原价99,现在活动价39.9,按照阶梯式增长,直到恢复原价

主要内容:


(1)SQL进阶实战技巧
可以参考如下教程,具体链接如下

SQL很简单,可你却写不好?也许这才是SQL最好的教程_sql语句写的很烂怎么办-CSDN博客

上面链接中的文章及技巧会不定期更新。

(2)数仓建模实战技巧和个人心得
       1)新人入职新公司后应如何快速了解业务?

       2)以业务视角看宽表化建设?

       3)  维度建模 or 关系型建模?

       4)业务模型与数据模型有什么区别?业务阶段的模型该如何建设?

       5)业务指标体系该如何建设?指标体系该如何维护?指标平台应如何建设?指标体系                           该由谁来搭建?

       6)如何优雅设计DWS层?DWS层模型好坏该如何评价?

       7)指标发生异常,该如何排查?应从哪些方面入手寻找问题点?

       8) 数据架构的选择,mpp or hadoop?

       9)数仓团队应如何体现自己的业务价值,讲好数据故事?

       10)BI与大数据有什么关系?BI与信息化、数字化之间有什么关系?BI与报表之间的关                          系?

       11)数据部门如何与业务部门沟通,并规划指引业务需求?

文章不限于以上内容,有新的想法也会及时更新到该专栏。

具体专栏链接如下:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2103417.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Elasticsearch数据写入过程

1. 写入请求 当一个写入请求&#xff08;如 Index、Update 或 Delete 请求&#xff09;通过REST API发送到Elasticsearch时&#xff0c;通常包含一个文档的内容&#xff0c;以及该文档的索引和ID。 2. 请求路由 协调节点&#xff1a;首先&#xff0c;请求会到达一个协调节点…

Linux:目录及文件管理

目录及文件管理 cd的命令使用 . 当前目录 .. 父目录&#xff08;上一层&#xff09; ~ 表示家目录 家目录&#xff1a;专门存放用户个性化信息的目录 ~user&#xff1a;用户user的家目录 /root: 是Linux管理员的家目录 /home: 存放所有普通用户的家目录]# cd ~root #去…

Leetcode面试经典150题-106.从中序和后序序列构造二叉树

解法都在代码里&#xff0c;不懂就留言或者私信 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val val; }* TreeNode(int val, TreeNo…

作为HR如何解决薪资谈判的僵局

作为HR如何跟候选人谈薪资问题&#xff0c;特别候选人的期望值&#xff0c;和公司对岗位的设定范围存在不对等的情况下&#xff0c;HR和候选人的薪资谈判往往就陷入僵局。面对这种情况&#xff0c;是直接放弃&#xff0c;还是有努力的空间呢&#xff1f; 在面对薪资谈判僵局时…

基于tesseract实现文档OCR识别

导入环境 导入必要的库 numpy: 用于处理数值计算。 argparse: 用于处理命令行参数。 cv2: OpenCV库&#xff0c;用于图像处理。 import numpy as np import argparse import cv2设置命令行参数 ap argparse.ArgumentParser() ap.add_argument("-i", "--imag…

中国各省份-环境规制相关数据(2000-2022年)

环境规制&#xff0c;也称为环保政策和污染治理&#xff0c;是一系列由政府制定的旨在解决环境问题、保护生态环境和促进可持续发展的政策措施。这些措施包括法律法规、行政命令、经济激励和市场机制等&#xff0c;目的是约束和指导企业和个人行为&#xff0c;减少对环境的负面…

【吊打面试官系列-Redis面试题】Redis 的同步机制了解么?

大家好&#xff0c;我是锋哥。今天分享关于 【Redis 的同步机制了解么&#xff1f;】面试题&#xff0c;希望对大家有帮助&#xff1b; Redis 的同步机制了解么&#xff1f; 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 Redis 可以使用主从同步&#xff0c;从从同…

Linux运维--iptables防火墙命令以及端口号等详解(全)

Linux之iptable防火墙命令以及端口号等详解&#xff08;全&#xff09; 在Linux系统中&#xff0c;你可以使用firewalld和iptables来管理和设置防火墙规则。Firewalld是一个动态管理防火墙的工具&#xff0c;而iptables是一个更底层的工具&#xff0c;可以直接配置Linux内核的…

经典卷积神经网络 (CNN) 架构模型详解:LeNet、AlexNNet、GoogleNet、ResNet、DenseNet

《博主简介》 小伙伴们好&#xff0c;我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 &#x1f44d;感谢小伙伴们点赞、关注&#xff01; 《------往期经典推荐------》 一、AI应用软件开发实战专栏【链接】 项目名称项目名称1.【人脸识别与管理系统开发…

文字转视频软件哪个好用?揭秘创意新工具

最近&#xff0c;我在筹备一个小型的个人项目&#xff0c;需要制作一系列的教学视频&#xff0c;但我对视频编辑一窍不通。就在我快要放弃的时候&#xff0c;我发现了一些神奇的工具&#xff0c;它们能自动把文字变成视频&#xff01; 想知道自动生成视频的软件有哪些吗&#…

Docker 安装FileBeat、Elasticsearch及Kibana详细步骤

一、ELK简介 二、docker安装Elasticsearch 2.1 创建Docker网络 2.2 拉取镜像 2.3 创建挂载目录 2.4 添加配置文件 2.5 创建es容器 2.6 测试Elasticsearch是否安装成功 三、docker安装Logstash 3.1 拉取镜像 3.2 创建挂载目录 3.3 添加配置文件 3.4 创建Logstash容…

如何更新我的SSL证书到期日期?

续订SSL证书需要获取新证书来替换即将过期的证书。该过程可能略有不同&#xff0c;具体取决于Gworg获取证书的方法。以下是有关如何续订SSL证书的一般指南&#xff1a; 检查有效期&#xff1a; 在开始续订流程之前&#xff0c;请检查SSL证书的当前到期日期。您通常可以在SSL证…

【PyTorch】深入解析 `with torch.no_grad():` 的高效用法

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 文章目录 引言一、with torch.no_grad(): 的作用二、with torch.no_grad(): 的原理三、with torch.no_grad(): 的高效用法3.1 模…

24 初识C++

目录 一、C概念 &#xff08;一&#xff09;C是什么 &#xff08;二&#xff09;C的历史 &#xff08;三&#xff09;C参考文档 二、第一个C程序 三、C的域 四、命名空间 namespace &#xff08;一&#xff09;namespace 的作用 &#xff08;二&#xff09;namespace 的…

如何从 SIM 卡恢复短信?这篇专业教程文章会帮到你

您是 Android 手机的忠实用户吗&#xff1f;您是否定期通过打电话、发送短信或在 WeChat 上聊天来与朋友和家人保持联系&#xff1f;如果你这样做&#xff0c;我相信你的手机上一定有很多短信&#xff0c;这些短信对于保存你与他人聊天的内容非常重要。您是否有这样的经验&…

碧桂园服务上海项目获评“2024年度上海市物业管理优秀示范项目”

近日&#xff0c;上海市物业管理行业协会发布《关于2024年度上海市物业管理优秀示范项目评定结果的公示》官方红头文件。文件对上海市393个物业管理优秀示范项目进行公示。 上海联源物业发展有限公司露香园项目、静鼎安邦府邸项目、佘山东郡项目和上海金晨物业经营管理有限公司…

mac 安装brew并配置国内源

​ 前置条件 - Xcode 命令行工具 一行代码安装Homebrew 添加到路径(PATH) - zsh shell为例 背景介绍 最近重装了我的MAC mini &#xff08;m1 芯片&#xff09;, 很多软件都需要重新安装&#xff0c;因为后续还需要安装一些软件&#xff0c;所以想着安装个包管理软件 什么…

苹果手机通话记录怎么恢复?已总结了4个方法,快速恢复

苹果手机的通话记录是我们联系好友与家人的重要方式之一。如果我们忘记储存重要好友或家人的联系方式&#xff0c;但是曾经有过通话&#xff0c;那我们就可以在苹果手机的通话记录中找到重要的联系人。但是&#xff0c;如果这些通话记录不小心被删除了&#xff0c;那苹果手机通…

ArkUI-状态管理最佳实践

ArkUI-状态管理最佳实践 概述合理选择装饰器使用监听和订阅精准控制组件刷新Watch装饰器监听数据源使用自定义事件发布订阅 概述 在声明式UI编程范式中&#xff0c;UI是应用程序状态的函数&#xff0c;应用程序状态的修改会更新响应的UI界面。ArkUI采用了MVVM模式。 ArkUI提…

2024年第十届数维杯国际大学生数学建模挑战赛

竞赛介绍 为了培养学生的创新意识及运用数学方法和计算机技术解决实际问题的能力&#xff0c;内蒙古创新教育学会、内蒙古基础教育研究院决定主办2024年第十届数维杯国际大学生数学建模挑战赛&#xff08;国际赛&#xff09;。 数维杯大学生数学建模挑战赛每年分为两场&#…