Top rank per group: Difference between revisions
Content added Content deleted
No edit summary |
|||
Line 6,266: | Line 6,266: | ||
Version using built-in database-like functionality. |
Version using built-in database-like functionality. |
||
<lang scheme> |
<lang scheme>#lang transd |
||
#lang transd |
|||
MainModule: { |
MainModule: { |
||
tbl : String( |
|||
`EmployeeName, |
`EmployeeName,EmployeeID,Salary:Int,Department |
||
Tyler Bennett, E10297,32000,D101 |
|||
John Rappl, E21437,47000,D050 |
|||
George Woltman, E00127,53500,D101 |
|||
Adam Smith, E63535,18000,D202 |
|||
Claire Buckman, E39876,27800,D202 |
|||
David McClellan,E04242,41500,D101 |
|||
Rich Holcomb, E01234,49500,D202 |
|||
Nathan Adams, E41298,21900,D050 |
|||
Richard Potter, E43128,15900,D101 |
|||
David Motsinger,E27002,19250,D202 |
|||
Tim Sampair, E03033,27000,D101 |
|||
Kim Arlich, E10001,57000,D190 |
|||
Timothy Grove, E16398,29900,D190`), |
|||
N: 2, |
N: 2, |
||
_start: (λ |
_start: (λ |
||
(with tabl Table() |
|||
(load-table tabl tbl) |
|||
(build-index tabl "Department") |
|||
(with rows (tsd-query tabl |
|||
select: ["Department"] |
|||
as: [[String()]] :distinct sortby: "Department" ) |
|||
(for row in rows do |
|||
(with recs (tsd-query tabl |
|||
select: all |
|||
( |
as: [[String(), String(), Int(), String()]] |
||
satisfying: (lambda Department String() |
|||
(eq Department (get row 0))) |
|||
sortby: "Salary" :desc |
|||
where: (lambda Department String() (eq Department (get row 0))) |
|||
limit: N) |
|||
(for rec in recs do (textout rec "\n"))))))) |
|||
(for rec in recs do (textout rec "\n")) |
|||
))))) |
|||
}</lang>{{out}} |
}</lang>{{out}} |
||
<pre> |
<pre> |