我正在尝试从列Product_ID(FK)中选择应该与BRANCH_ID(FK)一起列出的最畅销商品,例如分支1的销售量最高的商品,然后是分支2的销售量最高的商品等。这些是所有在我的表中称为销售。SQL - 如何从一列中选择最常出现的条目并将其与另一列一起列出?
有没有一个查询,允许我这样做?
任何帮助表示赞赏
我正在尝试从列Product_ID(FK)中选择应该与BRANCH_ID(FK)一起列出的最畅销商品,例如分支1的销售量最高的商品,然后是分支2的销售量最高的商品等。这些是所有在我的表中称为销售。SQL - 如何从一列中选择最常出现的条目并将其与另一列一起列出?
有没有一个查询,允许我这样做?
任何帮助表示赞赏
如果一个行是一个订单项目,然后像这样将有助于:
SELECT
s.branch_id
, s.product_id
, s.qnty
FROM (
SELECT
branch_id
, s.product_id
, COUNT(*) AS qnty
, RANK() OVER(PARTITION BY s.branch_id ORDER BY COUNT(*) DESC) AS [rank]
FROM dbo.sales AS s
GROUP BY s.branch_id, s.product_id
) s
WHERE s.rank = 1
ORDER BY branch_id
如果两个项目卖掉他们都将出现在相同的金额。
没有表定义我不能帮你进一步。
对于MySQL:
select distinct s1.BRANCH_ID, s1.Product_ID
from SALES s1
where s1.Product_ID = (
select s2.Product_ID
from SALES s2
where s2.BRANCH_ID = s1.BRANCH_ID
group by s2.Product_ID
order by count(1) desc
limit 1
);
或者更好:
select b.BRANCH_ID, (
select s2.Product_ID
from SALES s2
where s2.BRANCH_ID = b.BRANCH_ID
group by s2.Product_ID
order by count(1) desc
limit 1
) as Product_ID
from BRANCHES b;
如果添加的表结构和示例数据和预期输出... –