1# Combined Expressions - Putting it all together
2# Build complex queries using multiple operations
3
4# Generate employee report string
5swift-aql evaluate --model company-data.xmi \
6 --expression "company.departments.employees
7 ->collect(e | e.name + ' (' + e.title + '): $' + e.salary.toString())"
8
9# Output: ["Alice Smith (Engineering Director): $120000.0", ...]
10
11# Calculate department statistics
12swift-aql evaluate --model company-data.xmi \
13 --expression "company.departments->collect(d |
14 d.name + ': ' + d.employees->size().toString() + ' employees, ' +
15 'avg salary $' + (d.employees.salary->sum() / d.employees->size()).toString())"
16
17# Output: ["Engineering: 4 employees, avg salary $93750.0", ...]
18
19# Find highest paid employee per department
20swift-aql evaluate --model company-data.xmi \
21 --expression "company.departments->collect(d |
22 let maxSalary = d.employees.salary->max() in
23 d.name + ': ' + d.employees->select(e | e.salary = maxSalary)->first().name)"
24
25# Output: ["Engineering: Alice Smith", "Marketing: Emma Davis", "Finance: Henry Brown"]
26
27# Complex filtering with aggregation
28swift-aql evaluate --model company-data.xmi \
29 --expression "let seniorEmployees = company.departments.employees
30 ->select(e | e.age >= 30 and e.salary >= 80000)
31 in 'Senior employees: ' + seniorEmployees->size().toString() +
32 ', Total salary: $' + seniorEmployees.salary->sum().toString()"
33
34# Output: "Senior employees: 6, Total salary: $595000.0"
35
36# Conditional report generation
37swift-aql evaluate --model company-data.xmi \
38 --expression "company.departments->collect(d |
39 d.name + ' is ' +
40 if d.budget >= 400000 then 'high budget'
41 else if d.budget >= 250000 then 'medium budget'
42 else 'low budget' endif endif)"
43
44# Output: ["Engineering is high budget", "Marketing is medium budget", "Finance is low budget"]