0

我有一个像SQLITE数据库中附加图像的表。基于SQLITE中的一个数字列检索排序的数据

Sqlite table

我试图找回基于SUM(货运)列排序的数据。为此,我使用了下面的查询。

SELECT货主国家 FROM CountryDetails GROUP BY货主国家 ORDER BY SUM(货运)ASC
当我运行此我得到的结果如下图所示。

Sqlite result

如果我运行下面的查询我得到的结果如下图所示。没关系。

SELECT货主国家,货主国家 FROM CountryDetails GROUP BY货主国家,货主国家 ORDER BY SUM(货运),货主国家ASC

Result

取而代之的是我需要一个像下面的结果。按条款顺序SUM(Freight)应仅考虑ShipCountry。它不应该考虑ShipCountry和ShipCity。我的预期结果是

Tableau result

如何实现通过SQLITE查询这样的结果?

在SQL中我们可以实现如下查询。

选择货主国家,从Countrydetails组货主国家由货主国家,货主国家排序SUM(SUM(货运))以上(由货主国家分区),货主国家升序。

我们需要在Sqlite中这样的等效查询。

+0

西雅图在波兰? –

回答

2

使用子查询找到frieght金额为每个国家,再下订单只用这个国家一级总和:

SELECT 
    cd1.ShipCountry, 
    cd1.ShipCity 
FROM Countrydetails cd1 
INNER JOIN 
(
    SELECT ShipCountry, SUM(freight) AS freight_sum 
    FROM Countrydetails 
    GROUP BY ShipCountry 
) cd2 
    ON cd1.ShipCountry = cd2.ShipCountry 
ORDER BY 
    cd1.freight_sum, 
    cd1.ShipCountry, -- needed in case two countries happen to have the same sum 
    cd1.ShipCity 

我们可以添加每个城市的frieght另一类水平,在给定的顺序国家。但是你的预期产出并不意味着你想要这个。

+0

谢谢。在Order by子句做了小改动之后,它效果很好。 ORDER By cd2.freight_sum cd1.ShipCountry cd1.ShipCity –