我们需要使用SQL查询语句来从数据库中提取数据。以下是一个可能的SQL查询示例,假设你有一个名为sales的表,其中包含shop_id(店铺ID)、product_id(商品ID)、sku_id(库存单位ID)、year(销售年份)和quantity(销量)字段。
WITH RankedProducts AS (
SELECT
s.shop_id,
p.product_id,
p.sku_id,
p.quantity,
RANK() OVER (PARTITION BY s.shop_id, p.product_id ORDER BY p.quantity DESC) as rank
FROM
sales s
JOIN
products p ON s.product_id = p.product_id AND s.sku_id = p.sku_id
WHERE
s.year = EXTRACT(YEAR FROM CURRENT_DATE)
),
TopProducts AS (
SELECT
shop_id,
product_id,
MAX(quantity) as max_quantity
FROM
RankedProducts
GROUP BY
shop_id, product_id
)
SELECT
rp.shop_id,
rp.product_id,
rp.sku_id,
rp.quantity
FROM
RankedProducts rp
JOIN
TopProducts tp ON rp.shop_id = tp.shop_id AND rp.product_id = tp.product_id AND rp.quantity = tp.max_quantity
WHERE
rp.rank = 1
ORDER BY
rp.shop_id, rp.quantity DESC
LIMIT 5;这个查询做了以下几件事情:
RankedProducts公用表表达式(CTE):为每个店铺的每个商品按销量降序排名。TopProductsCTE:找出每个店铺每个商品销量最高的记录。- 最终查询:结合
RankedProducts和TopProductsCTE,选择每个店铺销量最高的前5个商品及其销量最高的SKU。
请注意,这个查询假设products表存在,并且sales表与products表通过product_id和sku_id字段关联。你可能需要根据你的实际数据库结构调整这个查询。
此外,这个查询使用了EXTRACT(YEAR FROM CURRENT_DATE)来获取当前年份,这在某些数据库系统中可能需要调整(例如,使用YEAR(CURRENT_DATE))。
如果你的数据库系统不支持窗口函数(如RANK()),你可能需要使用不同的方法来实现相同的结果。如果你需要针对特定数据库系统的查询帮助,请提供更多的上下文信息。




苏公网安备32021302001419号