查找两列的最佳组合

时间:2018-10-08 00:09:13

标签: sql sqlite

我正在尝试在给定架构中找到两列的最佳组合:

表名称:Sales

列:price, zip_code, color

在此示例中,我想根据zip_codecolor的最佳组合找到最高销售额(由价格确定)。

在所有查询中,我都尝试过,这似乎造成了一个很长的循环,只是找到了所有属性组合。

任何帮助将不胜感激:)

编辑:

数据:

 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

2 个答案:

答案 0 :(得分:1)

如果您只想排成一行-即使有联系,则group bylimit就足够了:

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;