【发布时间】:2015-06-04 19:22:47
【问题描述】:
我有 3 张桌子:
- 商店 {'ID','NAME'}
- 产品 {'ID','NAME'}
- 订单{'SHOP_ID','PRODUCT_ID','QTY'}
orders 表引用了product.id,用于在带有shop.id 的商店出售的产品。
我想创建一个 sql 视图,用于选择每个商店的前 10 种产品。因此,我希望结果表有 10 行(每个等级一个)和与 shop 表中存在的商店 ID 一样多的列,每列中商店的 10 个卖家。
获取每家商店的前十名产品很容易。通过重复并加入选择以从单个商店获取此信息,对于固定数量的 n 家商店也很容易获得此信息,但我不知道如何为可变数量的商店执行此操作。 我搜索了类似的例子,我的感觉是,这应该可以通过 common table expression 实现,但我不明白。
所以问题是:
如何在循环或类似结构中加入可变数量的子选择
结果应该是这样的示例:
'RANK' 'Berlin' 'Hamburg' 'München'
1 2 3 4
2 . . .
. . . .
. . . .
9 . . .
10 . . x
其中的数字是前 10 名卖家的产品 ID。 IE。列的创建类似于 xx.product_id 为 'Berlin'。
【问题讨论】:
标签: sql postgresql