如何在sql中使用此-> max(sum(paid * Quantity))解决查询

时间:2019-02-15 23:32:26

标签: sql

如何获取每个客户的最高价值订单?

select  num,  max(sum(paid*quantity))
from orders join
     pizza
     using (order#)
group by customer#;

num     orderN    price
-------- ---   -------
     1   109       30
     1   118       25
     3   101       30
     3   115       27
     4   107       23
     5   100       17
     5   129       16

输出要求

num     Pnum    price
-------- ---   -------
     1   109       30
     3   101       30
     4   107       23
     5   100       17

1 个答案:

答案 0 :(得分:0)

您要选择每python: 3.6.8 |Anaconda custom (64-bit)| (default, Dec 30 2018, 18:50:55) [MSC v.1915 64 bit (AMD64)] pandas: 0.24.0 zlib : 1.2.11 c0 c1 0 a c 1 b d df.csv, default terminator : b'c0,c1\r\na,c\r\nb,d\r\n' df.csv.gz, default terminator: b'c0,c1\r\r\na,c\r\r\nb,d\r\r\n' df.csv, '\n' terminator : b'c0,c1\na,c\nb,d\n' df.csv.gz, '\n' terminator : b'c0,c1\r\na,c\r\nb,d\r\n' 组中price最高的记录。

如果您的RDBMS支持窗口功能,那么直接使用num即可:

ROW_NUMBER()

否则,您可以采用以下方法,该方法将SELECT num, pnum, price FROM ( SELECT t.*, ROW_NUMBER OVER(PARTITION BY num ORDER BY price DESC) rn FROM mytable t ) x WHERE rn = 1 条件与相关子查询一起使用,以确保将记录与当前NOT EXISTS的最高价格相结合:

num