2.3 最大最小值所在的记录

选出金额最大的订单
SQL

WITH m AS (
  SELECT max(Amount) mta 
  FROM Orders
  WHERE OrderDate>='2022-01-01') 
SELECT Orders.CustomerID,OrderDate,Amount, 
      Quantity, EmployeeID,EmployeeName,ShipVia
FROM m,Orders
WHERE m.mta=Orders.Amount and OrderDate>='2022-01-01'

SPL

A
1 >st=date(“2022-01-01”), start=days@o(st)
2 =file(“Orders.ctx”).open().cursor(;OrderDate>=start)
3 =A2.total(maxp@a(Amount))

A3 maxp@a(Amount) 表示获得 Amount 值最大的所有记录, 最大金额的订单可能有多个,要用 @a 全取出返回

选出每个销售员的最后签订的订单 SQL

WITH m AS (
  SELECT EmployeeID,max(OrderDate) md
  FROM Orders
  WHERE Amount>1000
  GROUP BY EmployeeID) 
SELECT Orders.CustomerID,OrderDate,Amount, 
      Quantity, Orders.EmployeeID,EmployeeName,ShipVia
FROM m, Orders
WHERE m.EmployeeID =Orders.EmployeeID and m.md=Orders.OrderDate and Amount>1000

SPL

A
1 =file(“Orders.ctx”).open().cursor(;Amount>1000)
2 =A1.groups(EmployeeID; maxp(OrderDate)).(#2)
3 =A2.run(OrderDate=date@o(OrderDate))

A2 假定每个销售员最后签订的订单是唯一的,可以不用 @a 选项,直接 maxp 返回取值最大值的单条记录即可

还可以用 top 函数来写

A
2 =A1.groups(EmployeeID; top@1(1;-OrderDate)).(#2)

A2 top@1(1;-OrderDate) 表示取 OrderDate 值最大的一条记录,如果不加负号则表示取值最小的记录

以下是广告时间

对润乾产品感兴趣的小伙伴,一定要知道软件还能这样卖哟性价比还不过瘾? 欢迎加入好多乾计划。
这里可以低价购买软件产品,让已经亲民的价格更加便宜!
这里可以销售产品获取佣金,赚满钱包成为土豪不再是梦!
这里还可以推荐分享抢红包,每次都是好几块钱的巨款哟!
来吧,现在就加入,拿起手机扫码,开始乾包之旅



嗯,还不太了解好多乾?
猛戳这里
玩转好多乾