Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
331 changes: 331 additions & 0 deletions files_for_lab/solutions.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,331 @@
<?xml version="1.0" encoding="UTF-8"?><sqlb_project><db path="lab1_bank.sqlite" readonly="0" foreign_keys="1" case_sensitive_like="0" temp_store="0" wal_autocheckpoint="1000" synchronous="2"/><attached/><window><main_tabs open="structure browser pragmas query" current="3"/></window><tab_structure><column_width id="0" width="300"/><column_width id="1" width="0"/><column_width id="2" width="100"/><column_width id="3" width="2772"/><column_width id="4" width="0"/><expanded_item id="0" parent="1"/><expanded_item id="1" parent="1"/><expanded_item id="2" parent="1"/><expanded_item id="3" parent="1"/></tab_structure><tab_browse><table title="account" custom_title="0" dock_id="1" table="4,7:mainaccount"/><dock_state state="000000ff00000000fd00000001000000020000000000000000fc0100000001fb000000160064006f0063006b00420072006f00770073006500310100000000ffffffff0000011300ffffff000000000000000000000004000000040000000800000008fc00000000"/><default_encoding codec=""/><browse_table_settings/></tab_browse><tab_sql><sql name="SQL 1">---Query 1 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

ORDER BY client_id

LIMIT 5;



---Query 2 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;









---Query 3 Get the 3 lowest amounts in the `loan` table.

SELECT amount

FROM loan

ORDER BY amount

LIMIT 3;









---Query 4 What are the possible values for `status`, ordered alphabetically in ascending order in the `loan` table?

SELECT DISTINCT status

FROM loan

ORDER BY status;









---Query 5 What is the `loan_id` of the highest payment received in the `loan` table?

SELECT loan_id

FROM loan

ORDER BY payments DESC

LIMIT 1;







---Query 6 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 account_id

LIMIT 5;







---Query 7 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

AND amount = (

SELECT MIN(amount)

FROM loan

WHERE duration = 60

)

ORDER BY account_id;







---Query 8 What are the unique values of `k_symbol` in the `order` table?



SELECT DISTINCT k_symbol

FROM `order`

WHERE k_symbol IS NOT NULL

ORDER BY k_symbol;













---Query 9 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

ORDER BY order_id;





---Query 10 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 BETWEEN 29540 AND 29560

ORDER BY account_id;





---Query 11 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;







---Query 12 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, trans_id DESC

LIMIT 10;







---Query 13 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 district_id, COUNT(*) AS num_clients

FROM client

WHERE district_id &lt; 10

GROUP BY district_id

ORDER BY district_id;





---Query 14 In the `card` table, how many cards exist for each `type`? Rank the result starting with the most frequent `type`.



SELECT type, COUNT(*) AS num_cards

FROM card

GROUP BY type

ORDER BY num_cards DESC;





---Query 15 Using the `loan` table, print the top 10 `account_id`s based on the sum of all of their loan amounts.



SELECT account_id, SUM(amount) AS total_amount

FROM loan

GROUP BY account_id

ORDER BY total_amount DESC

LIMIT 10;







---Query 16 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(*) AS num_loans

FROM loan

WHERE date &lt; 930907

GROUP BY date

ORDER BY date DESC;





---Query 17 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(*) AS num_loans

FROM loan

WHERE date BETWEEN 971201 AND 971231

GROUP BY date, duration

ORDER BY date, duration;





---Query 18 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) AS total_amount

FROM trans

WHERE account_id = 396

GROUP BY account_id, type

ORDER BY type;





</sql><current_tab id="0"/></tab_sql></sqlb_project>