With the top function in
esProc, the records corresponding to the max value can be retrieved and the
computation becomes much easier. The following is such an example.
The database table golf
contains the scores of members in a golf club. Please select the best three
scores each member has ever got. Part of the data is as follows:
The code written in esProc:
A1: Retrieve data from the database. If the data come from a structured text file, the following equivalent code can be used: =file("\\golf").import@t(). Click the cell and we can check the retrieving result:
A2: =A1.group(User_ID), i.e., group the result of A1. The result is as follows:
As shown in the above figure, the data have been separated into multiple groups by User_ID and each row is a group. Click the blue hyperlink and members of the group will be shown as follows:
A3: =A2.(~.top(-Score;3)). The code is to compute the records of each group of data whose field Score is in the top three. Here "~" represents each group of data. ~.top() represents that top function will work on every group of data in turn. The top function can retrieve the N biggest/smallest records from a data set. For example, top(Score;3) represents sorting by Score in ascending order and fetching the first three records (i.e. min values); top(-Score;3) represents sorting in descending order and fetching the first three records (i.e. max values). The result of this step is as follows:
A4: =A3.union(), which means union data of every group. The result is as follows:
In the above, the computation is performed step by step. But the
steps can be integrated into one for the convenience of maintenance and
debugging: db.query("select * from
golf").group(User_ID). (~.top(-Score;3)).union().
The
method with which a Java program calls esProc is similar to that with which it
calls an ordinary database. The JDBC provided by esProc can be used to return a
computed result of the form of ResultSet
to Java main program. For more details, please refer to the related documents.
No comments:
Post a Comment