HANA SQL篇 齐码实例

时间:2021-04-22 16:51:14

今天还准备了一个齐码的实例 为大家进行进行sql的讲解

案例要求:(表的话就不发了 大家学习即可 如果有需要 私信我)

Shop_stock表中字段说明:

           UNITCODE:公司编码

           STORE_CODE:店铺编码

           CUSTOMER_TYPE:直营/加盟

           PRODUCT_NO:货号

           YEAR_CODE:款龄

           DALEI:大类

           MANUAL_SIZE_NO:尺码

           SIZE_SORT:尺码排序号

           COLOR_CODE:色号

           COLOR_NAME:颜色名称

           NUM:库存数量

HANA SQL篇 齐码实例


Shop_stock表数据如下

HANA SQL篇 齐码实例


首先我们先介绍几个sql方法:

LAG()和LEAD()统计函数可以在一次查询中取出同一字段的前N行的数据和后N行的值。这种操作可以使用对相同表的表连接来实现,不过使用LAG和 LEAD有更高的效率。

举lag()语法(lead相仿)

lag(arg1,arg2,arg3): arg1是从其他行返回的表达式 arg2是希望检索的当前行分区的偏移量。是一个正的偏移量,是一个往回检索以前的行的数目。 arg3是在arg2表示的数目超出了分组的范围时返回的值。


over(partition by columnname1 order by columnname2) 含义:按columname1指定的字段进行分组排序,或者说按字段columnname1的值进行分组排序。其中PARTITION BY 为分组字段,ORDER BY 指定排序字段


根据题目要求:

同一个货号色号下连续3个尺码有库存,就算齐码。

那么我们只要保证同一个货号色号组内 3个连续尺码都存在 那么就证明其为齐码 然后给他设置一个flag即可

那么 我们就可以用over(partition by 货号,色号 order by 尺码)这样就可以将同组色号货号放在一起 然后按照尺码进行排序

排序完毕后,就要证明其连续3个尺码是否都有存库呢?

所以我们就可以用到 lead 和lag方法  我们取一个size 对其进行 判断 lead()-size = size-lag() = 1 那么就可以证明其存在连续3个尺码 那么也就证明其是齐码


sql代码如下

HANA SQL篇 齐码实例

运行结果如下(1代表齐码 反之)

HANA SQL篇 齐码实例


希望这篇博客 对大家理解sql一些方法有帮助~~~~~

Shop_stock表