mysql - 如果任何商店连续 3 次减少其销售额。HIVE 或 SQL 中的解决方案?
问题描述
如果任何商店连续 3 次减价 -> 打印商店名称。
python algo:
1> sort by date.
loop
3> select shop(i) if not in list(visited),
check if its sale decrease
for 3 times consecutively,
if yes -> print the shop name.
2> append shopName in visited.
有没有办法在 HIVE 或 SQL 中做到这一点?
解决方案
在 Hive 中,您可以使用lag
andlead
获取上一行和下一行的值,并使用它们进行比较。
select distinct shop
from (select t.*
,lag(sales) over(partition by shop order by date) as prev_sales
,lead(sales) over(partition by shop order by date) as next_sales
from tbl t
) t
where prev_sales > sales and sales > next_sales
推荐阅读
- c++ - 在 SFINAE 上下文中使用的表达式中使用的 static_assert
- ruby-on-rails - 用于复杂关联的 ActiveModel 序列化器
- html - 为什么 HTML 不允许嵌套表单?
- android - 如何将相机基本照片中的照片保存在数据库中?
- excel - 从“ThisWorkbook”问题中复制
- gitlab - Gitlab CI/CD 作业的日志超出限制
- java - 当 Junit 使用 Gradle 测试成功时自动提交 Git
- android - 如何捕获股票 Android Clock 应用程序事件?
- reactjs - 在单个组件中使用多个 redux 连接 HOC
- javascript - 未捕获的类型错误:无法在我的 php 文档上设置 null 的属性“值”