sql - 选择总和最大

标签 sql sqlite sum max

我有一些这样的表的结果(700行)

country         province       purchase_power 
Angola          Cuanza Sul          10
Angola          Huambo              2
Angola          Namibe              2
Angola          Uige                12
Argentina       Buenos Aires        15
Argentina       Catamarca           3
Argentina       Corrientes          1
Argentina       Jujuy               13
Argentina       La Rioja            17
Argentina       Mendoza             1
Argentina       Misiones            1
Argentina       Neuquen             2
Argentina       San Juan            10
Argentina       San Luis            4
Argentina       Santa Cruz          1


我通过使用此查询得到

select  c.name as country,p.name as province,sum(qty) as purchase_power
from province p,purchases,country c
where P.rowid = Purchases.province and qty>0 and c.code=p.country and product=0  
group by p.name 


我只想要每个国家的购买力最高的省

表现应该考虑

ex output 
country         province       purchase_power 
Angola          Uige                12
Argentina       La Rioja            17

最佳答案

首先说明:


您必须使用显式联接,而不是隐式联接。
另外,您必须将c.name添加到group by
尽管SQLite允许选择group by子句中未使用的列,但是如果您不希望出现意外,则必须遵循标准SQL。


现在,由于性能成为问题,因此您可以对查询使用CTE,并且只执行一次即可使用其结果:

with cte as (
  select 
    c.name as country,
    p.name as province,
    sum(t.qty) as purchase_power
  from province p 
  inner join purchases t on p.rowid = t.province
  inner join country c on c.code = p.country 
  where t.qty > 0 and t.product=0  
  group by c.name, p.name
)
select cte.* from cte 
inner join (
  select country, max(purchase_power) purchase_power
  from cte
  group by country
) t on t.country = cte.country and t.purchase_power = cte.purchase_power

关于sql - 选择总和最大,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55620204/

相关文章:

c# - 使用 DataTable 的 SqlBulkInsert 到链接服务器

php - 只选择那些在同一个表中有多个值的记录

mysql - 如何对mysql表中的重复值求和

python - 根据另一列的唯一值求和列的值

MySQL 连接 3 个表并根据表 1 和表 2 中的 ID 对表 3 进行计数

sql - 连接字符串时VARCHAR(MAX)表现得很奇怪

javascript - Node JS+PostgreSQL : INSERT has more target columns than expressions

android - 如何将使用 sqlite 数据库的应用程序迁移到 Google Cloud。想要使用(CRUD)对数据的所有操作

python - 如何将具有一对多关系的2个SQLite表显示到一个QTableWidget中

java - 由于 mContext 对象,Android 中的编译错误