Gruppierung sortieren und Daten einschränken
Wenn Sie zusammen mit den Beispielen folgen möchten, lesen Sie Beispieldaten zum Ausführen von Abfragen, um Beispieldaten anzuzeigen und die Skripte zum Laden von Beispieldaten zum Testen zu verwenden. Die Skripte erstellen die in den Beispielen verwendeten Tabellen und laden Daten in die Tabellen.
Wenn Sie zusammen mit den Beispielen folgen möchten, lesen Sie Beispieldaten zum Ausführen von Abfragen, um Beispieldaten anzuzeigen. Außerdem erfahren Sie, wie Sie mit der OCI-Konsole die Beispieltabellen erstellen und Daten mit JSON-Dateien laden.
Ergebnisse sortieren
Verwenden Sie die ORDER BY-Klausel, um die Ergebnisse nach einer Spalte, einem Primärschlüssel oder einem nicht-primären Schlüssel zu sortieren.
Beispiel 1: Sortieren Sie die Ticketnummer aller Passagiere nach ihrem vollständigen Namen.
SELECT bag.ticketNo, bag.fullName
FROM BaggageInfo bag
ORDER BY bag.fullName
Erklärung: Sie sortieren die Ticketnummer der Passagiere im Schema BaggageInfo nach dem vollständigen Namen der Passagiere in aufsteigender Reihenfolge.
Ausgabe:
{"ticketNo":1762344493810,"fullName":"Adam Phillips"}
{"ticketNo":1762392135540,"fullName":"Adelaide Willard"}
{"ticketNo":1762376407826,"fullName":"Dierdre Amador"}
{"ticketNo":1762355527825,"fullName":"Doris Martin"}
{"ticketNo":1762324912391,"fullName":"Elane Lemons"}
{"ticketNo":1762350390409,"fullName":"Fallon Clements"}
{"ticketNo":1762341772625,"fullName":"Gerard Greene"}
{"ticketNo":176234463813,"fullName":"Henry Jenkins"}
{"ticketNo":1762383911861,"fullName":"Joanne Diaz"}
{"ticketNo":1762377974281,"fullName":"Kendal Biddle"}
{"ticketNo":1762355854464,"fullName":"Lisbeth Wampler"}
{"ticketNo":1762320369957,"fullName":"Lorenzo Phil"}
{"ticketNo":1762320569757,"fullName":"Lucinda Beckman"}
{"ticketNo":1762340683564,"fullName":"Mary Watson"}
{"ticketNo":1762330498104,"fullName":"Michelle Payne"}
{"ticketNo":1762348904343,"fullName":"Omar Harvey"}
{"ticketNo":1762399766476,"fullName":"Raymond Griffin"}
{"ticketNo":1762311547917,"fullName":"Rosalia Triplett"}
{"ticketNo":1762357254392,"fullName":"Teena Colley"}
{"ticketNo":1762390789239,"fullName":"Zina Christenson"}
{"ticketNo":1762340579411,"fullName":"Zulema Martindale"}
Beispiel 2: Rufen Sie die Passagierdetails (Vollname, Tag-Nummer) bis zur zuletzt gesehenen Zeit (letzte erste) für Passagiere ab (sortiert nach ihrem Namen), deren zuletzt gesehener Bahnhof MEL ist.
SELECT bag.fullName, bag.bagInfo[].tagNum,
bag.bagInfo[].lastSeenTimeGmt
FROM BaggageInfo bag
WHERE bag.bagInfo[].lastSeenStation=any "MEL"
ORDER BY bag.bagInfo[].lastSeenTimeGmt DESC
Erläuterung: Sie filtern zuerst die Daten in der Tabelle BaggageInfo basierend auf dem zuletzt angezeigten Arbeitsplatz, und Sie sortieren die gefilterten Ergebnisse basierend auf der zuletzt angezeigten Zeit und dem vollständigen Namen der Passagiere in absteigender Reihenfolge. Dazu verwenden Sie die ORDER BY-Klausel.
Hinweis: Sie können die Ausgabe der Abfrage mit mehreren Spalten sortieren.
Ausgabe:
{"fullName":"Adam Phillips","tagNum":"17657806255240","lastSeenTimeGmt":"2019-02-01T16:13:00Z"}
{"fullName":"Zina Christenson","tagNum":"17657806228676","lastSeenTimeGmt":"2019-02-04T10:08:00Z"}
{"fullName":"Joanne Diaz","tagNum":"17657806292518","lastSeenTimeGmt":"2019-02-16T16:13:00Z"}
{"fullName":"Zulema Martindale","tagNum":"17657806288937","lastSeenTimeGmt":"2019-02-25T20:15:00Z"}
Ergebnisse begrenzen und verschieben
Verwenden Sie die Klausel LIMIT, um die Anzahl von Ergebnissen zu begrenzen, die von einer SELECT-Anweisung zurückgegeben werden. Beispiel: Wenn eine Tabelle 1000 Zeilen enthält, begrenzen Sie die Anzahl der zurückzugebenden Zeilen, indem Sie einen LIMIT-Wert angeben. Es wird empfohlen, LIMIT und OFFSET mit einer ORDER BY-Klausel zu verwenden. Andernfalls werden die Ergebnisse in zufälliger Reihenfolge zurückgegeben, was zu unvorhersehbaren Ergebnissen führt.
Ein guter Anwendungsfall/Beispiel für die Verwendung von LIMIT und OFFSET ist das Paging der Ergebnisse. Beispiel: Ihre Anwendung möchte 4 Ergebnisse pro Seite anzeigen. Sie können Limit und Offset verwenden, um zustandsloses Paging in der Anwendung zu implementieren. Wenn Sie n (z.B. 4 ) Ergebnisse pro Seite anzeigen, werden die Ergebnisse für Seite m (z.B. 2) angezeigt, dann wäre der Offset (n*m-1), der in diesem Beispiel 4 ist, und der Grenzwert wäre n (der hier 4 ist).
Beispiel 1: Ihre Anwendung kann 4 Ergebnisse auf einer Seite anzeigen. Rufen Sie die von Ihrer Anwendung abgerufenen Details auf der ersten Seite für Passagiere ab, deren letzter sichtbarer Bahnhof JTR ist.
SELECT $bag.fullName, $bag.bagInfo.tagNum, $flt_time
FROM BaggageInfo $bag,
$bag.bagInfo[].lastSeenTimeGmt $flt_time
WHERE $bag.bagInfo[].lastSeenStation=any "JTR"
ORDER BY $flt_time LIMIT 4
Erläuterung: Sie filtern die Daten in der Tabelle BaggageInfo basierend auf dem zuletzt angezeigten Arbeitsplatz und sortieren das Ergebnis basierend auf der zuletzt angezeigten Zeit. Sie verwenden ein entschachteltes Array, um Ihre Daten zu vereinfachen. Das bagInfo-Array ist vereinfacht, und die zuletzt gesehene Zeit wird abgerufen. Sie müssen nur die ersten 4 Zeilen aus der Ergebnismenge anzeigen.
Ausgabe:
{"fullName":"Michelle Payne","tagNum":"17657806247861","flt_time":"2019-02-02T23:59:00Z"}
{"fullName":"Gerard Greene","tagNum":"1765780626568","flt_time":"2019-03-07T16:01:00Z"}
{"fullName":"Lorenzo Phil","tagNum":["17657806240001","17657806340001"],"flt_time":"2019-03-12T15:05:00Z"}
{"fullName":"Lucinda Beckman","tagNum":"17657806240001","flt_time":"2019-03-12T15:05:00Z"}
Beispiel 2: Ihre Anwendung kann 4 Ergebnisse auf einer Seite anzeigen. Rufen Sie die von Ihrer Anwendung abgerufenen Details auf der zweiten Seite für Passagiere ab, deren letzter sichtbarer Bahnhof JTR ist.
SELECT $bag.fullName, $bag.bagInfo.tagNum, $flt_time
FROM BaggageInfo $bag,
$bag.bagInfo[].lastSeenTimeGmt $flt_time
WHERE $bag.bagInfo[].lastSeenStation=any "JTR"
ORDER BY $flt_time LIMIT 4 OFFSET 4
Erläuterung: Sie filtern die Daten in der Tabelle BaggageInfo basierend auf dem zuletzt angezeigten Arbeitsplatz und sortieren das Ergebnis basierend auf der zuletzt angezeigten Zeit. Sie verwenden ein entschachteltes Array, um Ihre Daten zu vereinfachen. Sie müssen den Inhalt der zweiten Seite anzeigen, also legen Sie ein OFFSET 4 fest. Obwohl Sie 4 Zeilen begrenzen, wird nur eine Zeile angezeigt, da die Gesamtergebnismenge nur 5 ist. Die ersten werden übersprungen und die fünfte wird angezeigt.
Ausgabe:
{"fullName":"Lorenzo Phil","tagNum":["17657806240001","17657806340001"],
"flt_time":"2019-03-12T16:05:00Z"}
Gruppierungsergebnisse
Mit der GROUP BY-Klausel können Sie die Ergebnisse nach einer oder mehreren Tabellenspalten gruppieren. In der Regel wird eine GROUP BY-Klausel in Verbindung mit einem Aggregatausdruck wie COUNT, SUM und AVG verwendet.
Beispiel 1: Zeigt die Anzahl der Beutel für jede getätigte Reservierung an.
SELECT bag.confNo,
count(bag.bagInfo) AS TOTAL_BAGS
FROM BaggageInfo bag
GROUP BY bag.confNo
Erläuterung: Jeder Passagier hat einen Reservierungscode (confNo). Ein Passagier kann mehr als ein Gepäck haben. Hier gruppieren Sie die Daten basierend auf dem Reservierungscode und Sie erhalten die Anzahl des Arrays bagInfo, das die Anzahl der Taschen pro Reservierung angibt.
Ausgabe:
{"confNo":"FH7G1W","TOTAL_BAGS":1}
{"confNo":"PQ1M8N","TOTAL_BAGS":1}
{"confNo":"XT6K7M","TOTAL_BAGS":1}
{"confNo":"DN3I4Q","TOTAL_BAGS":1}
{"confNo":"QB1O0J","TOTAL_BAGS":1}
{"confNo":"TX1P7E","TOTAL_BAGS":1}
{"confNo":"CG6O1M","TOTAL_BAGS":1}
{"confNo":"OH2F8U","TOTAL_BAGS":1}
{"confNo":"BO5G3H","TOTAL_BAGS":1}
{"confNo":"ZG8Z5N","TOTAL_BAGS":1}
{"confNo":"LE6J4Z","TOTAL_BAGS":1}
{"confNo":"XT1O7T","TOTAL_BAGS":1}
{"confNo":"QI3V6Q","TOTAL_BAGS":2}
{"confNo":"RL3J4Q","TOTAL_BAGS":1}
{"confNo":"HJ4J4P","TOTAL_BAGS":1}
{"confNo":"CR2C8MY","TOTAL_BAGS":1}
{"confNo":"LN0C8R","TOTAL_BAGS":1}
{"confNo":"MZ2S5R","TOTAL_BAGS":1}
{"confNo":"KN4D1L","TOTAL_BAGS":1}
{"confNo":"MC0E7R","TOTAL_BAGS":1}
Beispiel 2: Wählen Sie das Gesamtgepäck aus, das von jedem Flughafen stammt (ohne Transitgepäck).
SELECT $flt_src as SOURCE,
count(*) as COUNT
FROM BaggageInfo $bag,
$bag.bagInfo.flightLegs[0].fltRouteSrc $flt_src
GROUP BY $flt_src
Erklärung: Sie möchten die Gesamtanzahl der Gepäckstücke abrufen, die von jedem Flughafen stammen. Sie möchten jedoch nicht die Flughäfen in Betracht ziehen, die Teil des Transits sind. Sie gruppieren die Daten also mit den Flugquellwerten des ersten Datensatzes des flightLegs-Arrays (da der erste Datensatz die Quelle ist). Sie bestimmen dann die Anzahl der Gepäckstücke.
Ausgabe:
{"SOURCE":"SFO","COUNT":6}
{"SOURCE":"BZN","COUNT":1}
{"SOURCE":"GRU","COUNT":1}
{"SOURCE":"LAX","COUNT":1}
{"SOURCE":"YYZ","COUNT":1}
{"SOURCE":"MEL","COUNT":1}
{"SOURCE":"MIA","COUNT":4}
{"SOURCE":"MSQ","COUNT":2}
{"SOURCE":"MXP","COUNT":2}
{"SOURCE":"JFK","COUNT":3}
Ergebnisse aggregieren
Verwenden Sie die integrierten Aggregat- und Sequence-Aggregatfunktionen, um Informationen wie eine Anzahl, eine Summe, einen Durchschnitt, ein Minimum oder ein Maximum zu suchen.
Beispiel 1: Suchen Sie die Gesamtanzahl der aufgegebenen Gepäckstücke, die voraussichtlich zu einem bestimmten Zeitpunkt am LAX-Flughafen ankommen.
SELECT $estdate as ARRIVALDATE,
count($flight) AS COUNT
FROM BaggageInfo $bag,
$bag.bagInfo.flightLegs.estimatedArrival $estdate,
$bag.bagInfo.flightLegs.flightNo $flight,
$bag.bagInfo.flightLegs.fltRouteDest $flt_dest
WHERE $estdate =any "2019-02-01T11:00:00Z" AND $flt_dest =any "LAX"
GROUP BY $estdate
Erläuterung: In einer Anwendung zur Verfolgung von Fluggepäck können Sie die Gesamtanzahl der aufgegebenen Gepäckstücke abrufen, die voraussichtlich an einem bestimmten Flughafen und zu einer bestimmten Uhrzeit ankommen. Für jede Flugstrecke enthält das Feld estimatedArrival im Array flightLegs der Tabelle BaggageInfo die Ankunftszeit der aufgegebenen Gepäckstücke und das Feld fltRouteDest den Zielflughafencode. In der obigen Abfrage, um die Gesamtzahl der Check-Bags zu bestimmen, die zu einem bestimmten Zeitpunkt am LAX-Flughafen ankommen, gruppieren Sie zuerst die Daten mit dem geschätzten Ankunftszeitwert mit der GROUP BY-Klausel. Wählen Sie aus der Gruppe nur die Zeilen aus, in denen der Zielflughafen LAX ist. Anschließend bestimmen Sie die Beutelanzahl für die resultierenden Zeilen mit der Zählfunktion.
Hier können Sie die Datumsangaben im ISO-8601-Format aufgrund der natürlichen Sortierreihenfolge von Zeichenfolgen vergleichen, ohne sie in Zeitstempeldatentypen konvertieren zu müssen. $bag.bagInfo.flightLegs.estimatedArrival und $bag.bagInfo.flightLegs.fltRouteDest sind Sequences. Da der Vergleichsausdruck '=' nicht für Sequenzen von mehreren Elementen verwendet werden kann, wird stattdessen der Sequenzvergleichsoperator '=any' verwendet, um die Felder estimatedArrival und fltRouteDest zu vergleichen.
Ausgabe:
{"ARRIVALDATE":"2019-02-01T11:00:00Z","COUNT":2}
Beispiel 2: Zeigt eine automatische Meldung über die Anzahl der aufgegebenen Gepäckstücke, die Reiseroute und die Anzahl der Flüge an einen Passagier in der Gepäckverfolgungsanwendung der Fluggesellschaft an.
SELECT fullName,
b.baginfo[0].routing,
size(baginfo) AS BAGS,
CASE
WHEN seq_count(b.bagInfo[0].flightLegs.flightNo) = 1
THEN "You have one flight to catch"
WHEN seq_count(b.bagInfo[0].flightLegs.flightNo) = 2
THEN "You have two flights to catch"
WHEN seq_count(b.bagInfo[0].flightLegs.flightNo) = 3
THEN "You have three flights to catch"
ELSE "You do not have any travel listed today"
END AS FlightInfo
FROM BaggageInfo b
WHERE ticketNo = 1762320369957
Erläuterung: In der Anwendung zur Gepäckverfolgung von Fluggesellschaften ist es hilfreich, eine kurze Suchmeldung zu der Anzahl der Flüge, der Anzahl der aufgegebenen Gepäckstücke und den Weiterleitungsdetails einer bevorstehenden Reise für einen Passagier anzuzeigen. Das Array bagInfo enthält die Checkbag-Details des Passagiers. Die Größe des Arrays bagInfo bestimmt die Anzahl der aufgegebenen Gepäckstücke pro Passagier. Das Array flightLegs in der bagInfo enthält die Flugdetails, die den einzelnen Reisebeinen entsprechen. Das Routingfeld enthält die Flughafencodes aller Reisefragmente. Sie können die Anzahl der Flüge bestimmen, indem Sie die flightNo-Felder im flightLegs-Array zählen. Wenn ein Passagier mehr als einen Checkbag hat, gibt es mehr als ein Element im Array bagInfo, eines für jede Tasche. In solchen Fällen enthält das Array flightLegs in allen Elementen des Feldes bagInfo einer Passagierdaten dieselben Werte. Dies liegt daran, dass das Ziel aller aufgegebenen Taschen für einen Passagier gleich ist. Beim Zählen der flightNo-Felder müssen Sie nur ein Element des bagInfo-Arrays berücksichtigen, um Duplizierung von Ergebnissen zu vermeiden. In dieser Abfrage berücksichtigen Sie nur das erste Element, das heißt bagInfo[0]. Da das Array flightLegs ein Feld flightNo für jedes Reisefragment enthält, handelt es sich um eine Sequenz, und Sie bestimmen die Anzahl der flightNo-Felder pro Passagier mit der Funktion seq_count.
Sie verwenden die CASE-Anweisung, um verschiedene Nachrichten basierend auf der Anzahl der Flüge einzuführen. Zur Benutzerfreundlichkeit werden in der Abfrage nur drei Transits berücksichtigt.
Ausgabe:
{"fullName":"Lorenzo Phil","routing":"SFO/IST/ATH/JTR","BAGS":2,"FlightInfo":"You have three flights to catch"}
Beispiele für die Verwendung der QueryRequest-API
Mit der QueryRequest -API können Sie Daten gruppieren und sortieren und aus einer NoSQL-Tabelle abrufen.
Zum Ausführen der Abfrage verwenden Sie die NoSQLHandle.query()-API.
Laden Sie den vollständigen Code GroupSortData.java aus den Beispielen hier herunter.
//Fetch rows from the table
private static void fetchRows(NoSQLHandle handle,String sqlstmt) throws Exception {
try (
QueryRequest queryRequest = new QueryRequest().setStatement(sqlstmt);
QueryIterableResult results = handle.queryIterable(queryRequest)){
for (MapValue res : results) {
System.out.println("\t" + res);
}
}
}
String orderby_stmt="SELECT bag.fullName, bag.bagInfo[].tagNum,bag.bagInfo[].lastSeenTimeGmt FROM BaggageInfo bag "+
"WHERE bag.bagInfo[].lastSeenStation=any \"MEL\" ORDER BY bag.bagInfo[].lastSeenTimeGmt DESC";
System.out.println("Using ORDER BY to sort data ");
fetchRows(handle,orderby_stmt);
String sortlimit_stmt="SELECT $bag.fullName, $bag.bagInfo.tagNum, $flt_time FROM BaggageInfo $bag, "+
"$bag.bagInfo[].lastSeenTimeGmt $flt_time WHERE $bag.bagInfo[].lastSeenStation=any \"JTR\" "+
"ORDER BY $flt_time LIMIT 4";
System.out.println("Using ORDER BY and LIMIT to sort and limit data ");
fetchRows(handle,sortlimit_stmt);
String groupsortlimit_stmt="SELECT $flt_src as SOURCE,count(*) as COUNT FROM BaggageInfo $bag, "+
"$bag.bagInfo.flightLegs[0].fltRouteSrc $flt_src GROUP BY $flt_src";
System.out.println("Using GROUP BY, ORDER BY and LIMIT to group, sort and limit data ");
fetchRows(handle,groupsortlimit_stmt);
Um die Abfrage auszuführen, verwenden Sie die Methode borneo.NoSQLHandle.query().
Laden Sie den vollständigen Code GroupSortData.py aus den Beispielen hier herunter.
# Fetch data from the table
def fetch_data(handle,sqlstmt):
request = QueryRequest().set_statement(sqlstmt)
print('Query results for: ' + sqlstmt)
result = handle.query(request)
for r in result.get_results():
print('\t' + str(r))
orderby_stmt = '''SELECT bag.fullName, bag.bagInfo[].tagNum,bag.bagInfo[].lastSeenTimeGmt FROM BaggageInfo bag
WHERE bag.bagInfo[].lastSeenStation=any "MEL" ORDER BY bag.bagInfo[].lastSeenTimeGmt DESC'''
print('Using ORDER BY to sort data:')
fetch_data(handle,orderby_stmt)
sortlimit_stmt = '''SELECT $bag.fullName, $bag.bagInfo.tagNum, $flt_time FROM BaggageInfo $bag,
$bag.bagInfo[].lastSeenTimeGmt $flt_time
WHERE $bag.bagInfo[].lastSeenStation=any "JTR"
ORDER BY $flt_time LIMIT 4'''
print('Using ORDER BY and LIMIT to sort and limit data:')
fetch_data(handle,sortlimit_stmt)
groupsortlimit_stmt = '''SELECT $flt_src as SOURCE, count(*) as COUNT FROM BaggageInfo $bag,
$bag.bagInfo.flightLegs[0].fltRouteSrc $flt_src GROUP BY $flt_src'''
print('Using GROUP BY, ORDER BY and LIMIT to group, sort and limit data:')
fetch_data(handle,groupsortlimit_stmt)
Um eine Abfrage auszuführen, verwenden Sie die Funktion Client.Query.
Laden Sie den vollständigen Code GroupSortData.go aus den Beispielen hier herunter.
//fetch data from the table
func fetchData(client *nosqldb.Client, err error, tableName string, querystmt string)(){
prepReq := &nosqldb.PrepareRequest{
Statement: querystmt,
}
prepRes, err := client.Prepare(prepReq)
if err != nil {
fmt.Printf("Prepare failed: %v\n", err)
return
}
queryReq := &nosqldb.QueryRequest{
PreparedStatement: &prepRes.PreparedStatement, }
var results []*types.MapValue
for {
queryRes, err := client.Query(queryReq)
if err != nil {
fmt.Printf("Query failed: %v\n", err)
return
}
res, err := queryRes.GetResults()
if err != nil {
fmt.Printf("GetResults() failed: %v\n", err)
return
}
results = append(results, res...)
if queryReq.IsDone() {
break
}
}
for i, r := range results {
fmt.Printf("\t%d: %s\n", i+1, jsonutil.AsJSON(r.Map()))
}
}
orderby_stmt := `SELECT bag.fullName, bag.bagInfo[].tagNum,bag.bagInfo[].lastSeenTimeGmt FROM BaggageInfo bag
WHERE bag.bagInfo[].lastSeenStation=any "MEL" ORDER BY bag.bagInfo[].lastSeenTimeGmt DESC`
fmt.Printf("Using ORDER BY to sort data::\n")
fetchData(client, err,tableName,orderby_stmt)
sortlimit_stmt := `SELECT $bag.fullName, $bag.bagInfo.tagNum, $flt_time FROM BaggageInfo $bag,
$bag.bagInfo[].lastSeenTimeGmt $flt_time
WHERE $bag.bagInfo[].lastSeenStation=any "JTR"
ORDER BY $flt_time LIMIT 4`
fmt.Printf("Using ORDER BY and LIMIT to sort and limit data::\n")
fetchData(client, err,tableName,sortlimit_stmt)
groupsortlimit_stmt := `SELECT $flt_src as SOURCE, count(*) as COUNT FROM BaggageInfo $bag,
$bag.bagInfo.flightLegs[0].fltRouteSrc $flt_src GROUP BY $flt_src`
fmt.Printf("Using GROUP BY, ORDER BY and LIMIT to group, sort and limit data::\n")
fetchData(client, err,tableName,groupsortlimit_stmt)
Um eine Abfrage auszuführen, verwenden Sie die Methode query.
JavaScript: Laden Sie den vollständigen Code GroupSortData.js aus den Beispielen hier herunter.
//fetches data from the table
async function fetchData(handle,querystmt) {
const opt = {};
try {
do {
const result = await handle.query(querystmt, opt);
for(let row of result.rows) {
console.log(' %O', row);
}
opt.continuationKey = result.continuationKey;
} while(opt.continuationKey);
} catch(error) {
console.error(' Error: ' + error.message);
}
}
TypeScript: Laden Sie den vollständigen Code GroupSortData.ts aus den Beispielen hier herunter.
interface StreamInt {
acct_Id: Integer;
profile_name: String;
account_expiry: TIMESTAMP;
acct_data: JSON;
}
/* fetches data from the table */
async function fetchData(handle: NoSQLClient,querystmt: string) {
const opt = {};
try {
do {
const result = await handle.query<StreamInt>(querystmt, opt);
for(let row of result.rows) {
console.log(' %O', row);
}
opt.continuationKey = result.continuationKey;
} while(opt.continuationKey);
} catch(error) {
console.error(' Error: ' + error.message);
}
}
const orderby_stmt = `SELECT bag.fullName, bag.bagInfo[].tagNum,bag.bagInfo[].lastSeenTimeGmt FROM BaggageInfo bag
WHERE bag.bagInfo[].lastSeenStation=any "MEL" ORDER BY bag.bagInfo[].lastSeenTimeGmt DESC`
console.log("Using ORDER BY to sort data");
await fetchData(handle,orderby_stmt);
const sortlimit_stmt = `SELECT $bag.fullName, $bag.bagInfo.tagNum, $flt_time FROM BaggageInfo $bag,
$bag.bagInfo[].lastSeenTimeGmt $flt_time
WHERE $bag.bagInfo[].lastSeenStation=any "JTR"
ORDER BY $flt_time LIMIT 4`
console.log("Using ORDER BY and LIMIT to sort and limit data");
await fetchData(handle,sortlimit_stmt);
const groupsortlimit_stmt = `SELECT $flt_src as SOURCE, count(*) as COUNT FROM BaggageInfo $bag,
$bag.bagInfo.flightLegs[0].fltRouteSrc $flt_src GROUP BY $flt_src`
console.log("Using GROUP BY, ORDER BY and LIMIT to group, sort and limit data");
await fetchData(handle,groupsortlimit_stmt);
Um eine Abfrage auszuführen, können Sie die Methode QueryAsync aufrufen oder die Methode GetQueryAsyncEnumerable aufrufen und über die resultierende asynchrone aufzählbare Methode iterieren.
Laden Sie den vollständigen Code GroupSortData.cs aus den Beispielen hier herunter.
private static async Task fetchData(NoSQLClient client,String querystmt){
var queryEnumerable = client.GetQueryAsyncEnumerable(querystmt);
await DoQuery(queryEnumerable);
}
private static async Task DoQuery(IAsyncEnumerable<QueryResult<RecordValue>> queryEnumerable){
Console.WriteLine(" Query results:");
await foreach (var result in queryEnumerable) {
foreach (var row in result.Rows)
{
Console.WriteLine();
Console.WriteLine(row.ToJsonString());
}
}
}
private const string orderby_stmt =@"SELECT bag.fullName, bag.bagInfo[].tagNum,bag.bagInfo[].lastSeenTimeGmt
FROM BaggageInfo bag WHERE bag.bagInfo[].lastSeenStation=any ""MEL""
ORDER BY bag.bagInfo[].lastSeenTimeGmt DESC";
Console.WriteLine("\nUsing ORDER BY to sort data!");
await fetchData(client,orderby_stmt);
private const string sortlimit_stmt =@"SELECT $bag.fullName, $bag.bagInfo.tagNum, $flt_time FROM BaggageInfo $bag,
$bag.bagInfo[].lastSeenTimeGmt $flt_time
WHERE $bag.bagInfo[].lastSeenStation=any ""JTR""
ORDER BY $flt_time LIMIT 4";
Console.WriteLine("\nUsing ORDER BY and LIMIT to sort and limit data!");
await fetchData(client,sortlimit_stmt);
private const string groupsortlimit_stmt =@"SELECT $flt_src as SOURCE, count(*) as COUNT FROM BaggageInfo $bag,
$bag.bagInfo.flightLegs[0].fltRouteSrc $flt_src GROUP BY $flt_src" ;
Console.WriteLine("\nUsing GROUP BY, ORDER BY and LIMIT to group, sort and limit data:");
await fetchData(client,groupsortlimit_stmt);