面试某某公司BI岗位的时候,面试题中的一道sql题,咋看一下很简单,写的时候发现自己缺乏总结,没有很快的写出来。
题目如下:
求每个品牌的促销天数
表sale为促销营销表,数据中存在日期重复的情况,例如id为1的end_date为20180905,id为2的start_date为20180903,即id为1和id为2的存在重复的销售日期,求出每个品牌的促销天数(重复不算)
表结果如下:
最终结果应为
brand | all_days |
---|---|
nike | 13 |
oppo | 12 |
vivo | 18 |
建表语句
方式1:
利用自关联下一条记录的方法
运行结果
该方法对本题中的表格有效,但对于有id不连续的品牌的记录时不一定适用。
方式2:
运行结果
其中条件
可以换成
结果同样正确
用分析函数同样可行的,自己电脑暂时没装oracle,用的mysql写的。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我是攻城狮。