我有一张有关客户及其购买行为的表,如下所示:
customer shop time
----------------------------
1 5 13.30
1 5 14.33
1 10 22.17
2 3 12.15
2 1 13.30
2 1 15.55
2 3 17.29
由于我要换班,所以需要以下输出
customer shop time
----------------------------
1 5 13.30
1 10 22.17
2 3 12.15
2 1 13.30
2 3 17.29
我尝试使用
ROW_NUMBER() OVER (PARTITION BY customer, shop ORDER BY time ASC) AS a counter
,然后仅保留所有counter=1
。但是,当客户稍后再次访问同一家商店时,这给我带来麻烦,例如本示例中的customer=2
和shop=3
。
我想到了这个
WITH a AS
(
SELECT
customer, shop, time,
ROW_NUMBER() OVER (PARTITION BY customer ORDER BY time ASC) AS counter
FROM
db
)
SELECT a1.*
FROM a a1
JOIN a AS a2 ON (a1.device = a2.device AND a2.counter1 + 1 = a1.counter1 AND a2.id <> a1.id)
UNION
SELECT a.*
FROM a
WHERE counter1 = 1
但是,这非常低效,并且在我的数据所在的AWS中运行它会导致错误告诉我
以此比例系数查询耗尽的资源
有什么方法可以使查询效率更高?
答案 0 :(得分:0)
这是一个孤岛问题。但是最简单的解决方案使用<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.viewpager.widget.ViewPager
android:id="@+id/view_pager_top"
android:layout_width="300dp"
android:layout_height="300dp"
/>
<include
layout="@layout/bottom_sheet_add_listing_media_gallery"
/>
</androidx.coordinatorlayout.widget.CoordinatorLayout>
:
lag()