pos@z("abcdeffdef","def") //@z: backwards searching
pos@c("abcdef","Def") //@c: Case insensitive
pos@zc("abcdeffdef","Def") //Options working together
//The three-level parameter: first level represented by semicolon, second level represented by comma, and third level represented by colon
join(Orders:o,SellerId;Employees:e,EId).groups(e.Dept;sum(o.Amount))
//Implicit Lambda syntax, further simplified by symbols [] # ~
stock.sort(tradeDate).group@i(price< price[-1]).max(~.len())
// Position searching and relative reference of position stock.calc(stock.pselect(price>100),price-price[-1])
// Further computations on each member subset of group
T("employee.csv").group(DEPT).select(~.len()>10).conj()
//Directly use dot(.)to reference data at a lower level
json(file("orders.json").read())orders.select(order_details.select@1(product.category=="Electronics") && order_details.sum(price*quantity)>200).new(order_id,order_date)
public Map<String, Integer> calculateMaxConsecutiveIncreaseDays(List<StockRecord> stockRecords) { Map<String, List<StockRecord>> groupedByCode = stockRecords.stream() .collect(Collectors.groupingBy( StockRecord::getCode, Collectors.collectingAndThen( Collectors.toList(), list -> { list.sort(Comparator.comparing(StockRecord::getDt)); return list; } ) )); Map<String, Integer> result = new HashMap<>(); for (Map.Entry<String, List<StockRecord>> entry : groupedByCode.entrySet()) { String code = entry.getKey(); List<StockRecord> records = entry.getValue(); if (records.isEmpty()) continue; Map<Integer, Integer> consecutiveDaysMap = new HashMap<>(); int cumulativeSum = 0; for (int i = 0; i < records.size(); i++) { StockRecord current = records.get(i); int flag; if (i == 0) { flag = 1; } else { StockRecord prev = records.get(i - 1); flag = current.getCl() > prev.getCl() ? 0 : 1; } cumulativeSum += flag; consecutiveDaysMap.merge(cumulativeSum, 1, Integer::sum); } int maxDays = consecutiveDaysMap.values().stream() .max(Comparator.naturalOrder()) .orElse(0); result.put(code, maxDays); } return result; }
SELECT CODE, MAX(con_rise) AS max_increase_days FROM ( SELECT CODE, COUNT(*) AS con_rise FROM ( SELECT CODE, DT, SUM(updown_flag) OVER (PARTITION BY CODE ORDER BY CODE, DT) AS no_up_days FROM ( SELECT CODE, DT, CASE WHEN CL > LAG(CL) OVER (PARTITION BY CODE ORDER BY CODE, DT) THEN 0 ELSE 1 END AS updown_flag FROM stock ) ) GROUP BY CODE, no_up_days ) GROUP BY CODE
Simport pandas as pd stock_file = "StockRecords.txt" stock_info = pd.read_csv(stock_file,sep="\t") stock_info.sort_values(by=['CODE','DT'],inplace=True) stock_group = stock_info.groupby(by='CODE') stock_info['label'] = stock_info.groupby('CODE')['CL'].diff().fillna(0).le(0).astype(int).cumsum() max_increase_days = {} for code, group in stock_info.groupby('CODE'): max_increase_days[code] = group.groupby('label').size().max() – 1 max_rise_df = pd.DataFrame(list(max_increase_days.items()), columns=['CODE', 'max_increase_days'])
stock.sort(DT).group(CODE;~.group@i(CL< CL[-1]).max(~.len()):mids)
A | |
1 | =connect("mysql") |
2 | =A1.query@x("SELECT o.order_id, o.user_id, o.order_date, oi.product_id, oi.quantity, oi.price FROM orders o JOIN order_items oi ON o.order_id = oi.order_id WHERE o.order_date >= CURDATE() - INTERVAL 1 MONTH") |
3 | =mongo_open("mongodb://192.168.1.15:27017/raqdb") |
4 | =mongo_shell@d(A3, "{ 'find': 'products', 'filter': { 'category': { '$in': ['Tablets', 'Wearables', 'Audio'] } }}” ) |
5 | =A2.join@i(product_id,A4:product_id,name,brand,category,attributes) |
6 | =A5.groups(category;sum(price*quantity):amount) |
esProc offers two high-performance storage formats
Simple format, no need to define structure
Mixed row-based and columnar storage, support index, and need to define structure beforehand
//To get TopN from entire set,database engine will perform optimization to avoid big sorting
SELECT TOP 10 * FROM Orders ORDER BY Amount DESC
//For an intra-group TopN,database optimization is disabled by the nested query and can only turn to big sorting
SELECT * FROM (
SELECT *, ROW_NUMBER() OVER (PARTITION BY Area ORDER BY Amount DESC) rn
FROM Orders )
WHERE rn<=10
A | B | |
1 | =file("Orders.ctx").open().cursor() | |
2 | =A1.groups(;top(10;-Amount)) | Get TopN from entire set |
3 | =A1.groups(Area;top(10;-Amount)) | GET TopN from each group |