This one is pretty simple – once you got the hang of it ;)
There are two operators that let you execute custom queries: Query() and Execute().
This operator is used if you want to receive data. Lets assume we have Transaction object and we want to receive it grouped by its field TypeID:
List<Transaction> transactions = await connection.QueryAsync<Transaction>("SELECT * FROM 'Transaction' GROUP BY TypeID");
This will return all Transactions grouped by the type ID. If needed you can use the sql operators like AVG, SUM and so on in the SELECT statement.
While Query() is used to receive data Execute() is used if you don’t want to receive data. For example if you want to attach a second database:
await sqlite.ExecuteAsync("ATTACH DATABASE '" + path + "\\static.sqlite' AS Static");