我正在尝试在给定架构中找到两列的最佳组合:
表名称:Sales
列:price, zip_code, color
在此示例中,我想根据zip_code
和color
的最佳组合找到最高销售额(由价格确定)。
在所有查询中,我都尝试过,这似乎造成了一个很长的循环,只是找到了所有属性组合。
任何帮助将不胜感激:)
编辑:
数据:
price | zip_code | color
--------+-----------+--------
11 | 1455 | red
--------+-----------+--------
2 | 1455 | red
--------+-----------+--------
12 | 1452 | blue
--------+-----------+--------
3 | 1451 | pink
--------+-----------+--------
4 | 1455 | pink
--------+-----------+--------
所需结果:
price | zip_code | color
--------+-----------+--------
13 | 1455 | red
答案 0 :(得分:1)
如果您只想排成一行-即使有联系,则group by
和limit
就足够了:
select zip_code, color, sum(price) as total_sales
from Sales
group by zip_code, color
order by total_sales desc
limit 1;
如果您想要所有最上面的行,则需要更多的逻辑:
with zc as (
select zip_code, color, sum(price) as total_sales
from Sales
group by zip_code, color
)
select zc.*
from zc
where zc.total_sales = (select max(zc2.total_sales) from zc zc2);
答案 1 :(得分:0)
您需要按邮政编码和颜色取所有销售额的总和,然后选择新表的第一行,按总销售额降序排列。看起来像:
Select zip_code, color, sum(price) as total_sales
From Sales
Group by zip_code, color
Order by total_sales desc
limit 1;