From 40b15d7640fcbc5c275e916e5b4e559ea7117b4c Mon Sep 17 00:00:00 2001 From: Andre Pires Date: Tue, 26 May 2026 19:52:31 +0100 Subject: [PATCH] Solved lab --- readme.md | 93 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 93 insertions(+) diff --git a/readme.md b/readme.md index 47b4dff..f4bd210 100644 --- a/readme.md +++ b/readme.md @@ -28,6 +28,11 @@ Assume that any `_id` columns are incremental, meaning that higher ids always oc Get the `id` values of the first 5 clients from `district_id` with a value equals to 1. +SELECT client_id +FROM client +WHERE district_id==1 +LIMIT 5 + Expected result: ```shell @@ -42,6 +47,12 @@ Expected result: In the `client` table, get an `id` value of the last client where the `district_id` equals to 72. +SELECT client_id +FROM client +WHERE district_id==72 +ORDER BY client_id DESC +LIMIT 1 + Expected result: ```shell @@ -52,6 +63,11 @@ Expected result: Get the 3 lowest amounts in the `loan` table. +SELECT amount +FROM loan +ORDER BY amount +LIMIT 3 + Expected result: ```shell @@ -64,6 +80,10 @@ Expected result: What are the possible values for `status`, ordered alphabetically in ascending order in the `loan` table? +SELECT DISTINCT(status) +FROM loan +ORDER BY status + Expected result: ```shell @@ -77,6 +97,10 @@ D What is the `loan_id` of the highest payment received in the `loan` table? +SELECT loan_id +FROM loan +WHERE amount = (SELECT MAX(amount) FROM loan) + Expected result: ```shell @@ -87,6 +111,11 @@ Expected result: What is the loan `amount` of the lowest 5 `account_id`s in the `loan` table? Show the `account_id` and the corresponding `amount` +SELECT account_id, amount +FROM loan +ORDER BY loan_id ASC +LIMIT 5 + Expected result: ```shell @@ -102,6 +131,12 @@ Expected result: What are the `account_id`s with the lowest loan `amount` that have a loan `duration` of 60 in the `loan` table? +SELECT account_id +FROM loan +WHERE duration=60 +ORDER BY amount ASC +LIMIT 5 + Expected result: ```shell @@ -118,6 +153,12 @@ What are the unique values of `k_symbol` in the `order` table? Note: There shouldn't be a table name `order`, since `order` is reserved from the `ORDER BY` clause. You have to use backticks to escape the `order` table name. +SELECT DISTINCT (k_symbol) +FROM `order` +WHERE k_symbol IS NOT NULL + AND TRIM(k_symbol) != '' +ORDER BY k_symbol + Expected result: ```shell @@ -131,6 +172,10 @@ UVER In the `order` table, what are the `order_id`s of the client with the `account_id` 34? +SELECT order_id +FROM `order` +WHERE account_id=34 + Expected result: ```shell @@ -143,6 +188,10 @@ Expected result: In the `order` table, which `account_id`s were responsible for orders between `order_id` 29540 and `order_id` 29560 (inclusive)? +SELECT DISTINCT(account_id) +FROM `order` +WHERE order_id>=29540 and order_id<=29560 + Expected result: ```shell @@ -156,6 +205,10 @@ Expected result: In the `order` table, what are the individual amounts that were sent to (`account_to`) id 30067122? +SELECT amount +FROM `order` +WHERE account_to=30067122 + Expected result: ```shell @@ -166,6 +219,12 @@ Expected result: In the `trans` table, show the `trans_id`, `date`, `type` and `amount` of the 10 first transactions from `account_id` 793 in chronological order, from newest to oldest. +SELECT trans_id, date, type, amount +FROM trans +WHERE account_id=793 +ORDER BY date DESC +LIMIT 10 + Expected result: ```shell @@ -185,6 +244,11 @@ Expected result: In the `client` table, of all districts with a `district_id` lower than 10, how many clients are from each `district_id`? Show the results sorted by the `district_id` in ascending order. +SELECT COUNT(client_id) +FROM client +WHERE district_id<10 +GROUP BY district_id + Expected result: ```shell @@ -203,6 +267,10 @@ Expected result: In the `card` table, how many cards exist for each `type`? Rank the result starting with the most frequent `type`. +SELECT type, COUNT(type) +FROM card +GROUP BY type + Expected result: ```shell @@ -215,6 +283,12 @@ gold 88 Using the `loan` table, print the top 10 `account_id`s based on the sum of all of their loan amounts. +SELECT account_id, amount +FROM loan +GROUP BY (account_id) +ORDER BY amount DESC +LIMIT 10 + Expected result: ```shell @@ -234,6 +308,13 @@ Expected result: In the `loan` table, retrieve the number of loans issued for each day, before (excl) 930907, ordered by date in descending order. +SELECT DATE, COUNT(DATE) AS COUNTER +FROM(SELECT * + FROM loan + WHERE DATE<930907) +GROUP BY DATE +ORDER BY DATE DESC + Expected result: ``` @@ -248,6 +329,12 @@ Expected result: In the `loan` table, for each day in December 1997, count the number of loans issued for each unique loan duration, ordered by date and duration, both in ascending order. You can ignore days without any loans in your output. +SELECT DATE, duration, COUNT(loan_id) AS COUNTER +FROM LOAN +WHERE DATE LIKE '9712%' +GROUP BY DATE, duration +ORDER BY DATE + Expected result: ```shell @@ -277,6 +364,12 @@ Expected result: In the `trans` table, for `account_id` 396, sum the amount of transactions for each type (`VYDAJ` = Outgoing, `PRIJEM` = Incoming). Your output should have the `account_id`, the `type` and the sum of amount, named as `total_amount`. Sort alphabetically by type. +SELECT account_id, type, SUM(amount) +FROM (SELECT * +FROM TRANS +WHERE account_id=396) +GROUP BY TYPE + Expected result: ```shell