让 GPT 帮你
瓶盒箱的编码是有什么规律吗 若是没规律 解题关键都是 10 的倍数
箱码或多或少于比例:select 顶级码,count(*) from table_name group by 顶级码 having count(*)<>101;
-- 101 箱码自己有一条数据
盒码、箱码 或多或少于比例:select 父级码,count(*) from table_name where '父级码' is not null group by '父级码' having count(*)<>10;
缺少顶级码 select * from table_name where `顶级码` is null`;
缺少父级码: select * from table_name where `父级码` is null and `码`<>`顶级码`;
这种分开,先找瓶和盒之间异常,再找盒和箱之间异常,挺不错的题,只能说现实场景比这个复杂得多。
这种异常就可以拿来做告警,有了告警再去反查日志。
有点东西
这个是我自己写的,有大佬看下我是否有写错吗?
# 码字段为NULL情况
SELECT * FROM Table_name
WHERE '码' IS NULL;
# 父级码字段为NULL情况
SELECT * FROM Table_name
WHERE '父级码' IS NULL;
# 顶级码字段为NULL情况
SELECT * FROM Table_name
WHERE '顶级码' IS NULL;
# 码字段出现父级码或顶级码情况
SELECT * FROM Table_name
WHERE '码' NOT LIKE '瓶码%' ;
# 父级码字段出现码或者顶级码情况
SELECT * FROM Table_name
WHERE '父级码' NOT LIKE '盒码%';
# 顶级码字段出现码或者父级码情况
SELECT * FROM Table_name
WHERE '顶级码' NOT LIKE '箱码%';
# 父级码出现大于10瓶或小于10瓶的情况
SELECT '父级码', count('码') FROM Table_name
WHERE '码' IS NOT NULL OR '顶级码' IS NOT NULL
GROUP BY '父级码'
HAVING COUNT('码') != 10;
# 顶级码出现大于10箱或者小于10箱的情况
SELECT '顶级码', COUNT('父级码') FROM Table_name
WHERE '码' IS NOT NULL OR '父级码' IS NOT NULL
GROUP BY '顶级码'
HAVING COUNT('父级码') != 10;
# 顶级码出现大于100瓶或者小于100瓶的情况
SELECT '顶级码', COUNT('码') FROM Table_name
WHERE '码' IS NOT NULL OR '父级码' IS NOT NULL
GROUP BY '顶级码'
HAVING COUNT('码') != 100;
我看表中,有些瓶子编号列会写着盒子的编号,
关系表,即是题中的表我用 table 代替,
为纠出对应的列有出现非对应类的编码,假设有其他三个表记录着瓶码 bottle,盒码 box,箱码 carton
1.剔除空值,非对应类的码(比如,瓶码列存在的盒码)。
select * from table where bottle not exist (bottle_table)
or box not exist (box_table) or carton not exist (carton_table).
可以将这些记录复制到另外一个表,
然后将他删除
2.找到瓶码和盒子码不是 1:10 的记录
select * from table group by box having count()!=10
3.找到盒子码和箱子码不是 1:10 的记录
select * from table group by carton having count()!=10
只是个人解题,不知道合不合理,请各位指教。