Compare commits
4 Commits
12e5244cc8
...
b84425cb17
Author | SHA1 | Date |
---|---|---|
|
b84425cb17 | 5 days ago |
|
6c93896de9 | 5 days ago |
|
1547543d01 | 5 days ago |
|
93044aa905 | 5 days ago |
@ -1,3 +1,4 @@
|
|||||||
/.idea/
|
/.idea/
|
||||||
**/target/
|
**/target/
|
||||||
*.iml
|
*.iml
|
||||||
|
*.env
|
||||||
|
@ -1,2 +1,3 @@
|
|||||||
java temurin-21.0.3+9.0.LTS
|
java temurin-21.0.3+9.0.LTS
|
||||||
maven 3.9.6
|
maven 3.9.6
|
||||||
|
ghc 9.8.4
|
||||||
|
@ -0,0 +1,90 @@
|
|||||||
|
-- CREATE
|
||||||
|
CREATE TABLE Company
|
||||||
|
(
|
||||||
|
company_code VARCHAR(255) PRIMARY KEY,
|
||||||
|
founder VARCHAR(255)
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
CREATE TABLE Lead_Manager
|
||||||
|
(
|
||||||
|
lead_manager_code VARCHAR(255) PRIMARY KEY,
|
||||||
|
company_code VARCHAR(255)
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
CREATE TABLE Senior_Manager
|
||||||
|
(
|
||||||
|
senior_manager_code VARCHAR(255) PRIMARY KEY,
|
||||||
|
lead_manager_code VARCHAR(255),
|
||||||
|
company_code VARCHAR(255)
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE Manager
|
||||||
|
(
|
||||||
|
manager_code VARCHAR(255) PRIMARY KEY,
|
||||||
|
senior_manager_code VARCHAR(255),
|
||||||
|
lead_manager_code VARCHAR(255),
|
||||||
|
company_code VARCHAR(255)
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE Employee
|
||||||
|
(
|
||||||
|
employee_code VARCHAR(255) PRIMARY KEY,
|
||||||
|
manager_code VARCHAR(255),
|
||||||
|
senior_manager_code VARCHAR(255),
|
||||||
|
lead_manager_code VARCHAR(255),
|
||||||
|
company_code VARCHAR(255)
|
||||||
|
);
|
||||||
|
|
||||||
|
-- INSERT
|
||||||
|
|
||||||
|
INSERT INTO Company (company_code, founder)
|
||||||
|
VALUES ('C001', 'Alice Johnson'),
|
||||||
|
('C002', 'Bob Smith');
|
||||||
|
|
||||||
|
INSERT INTO Lead_Manager (lead_manager_code, company_code)
|
||||||
|
VALUES ('LM001', 'C001'),
|
||||||
|
('LM002', 'C002');
|
||||||
|
|
||||||
|
INSERT INTO Senior_Manager (senior_manager_code, lead_manager_code, company_code)
|
||||||
|
VALUES ('SM001', 'LM001', 'C001'),
|
||||||
|
('SM002', 'LM002', 'C002');
|
||||||
|
|
||||||
|
INSERT INTO Manager (manager_code, senior_manager_code, lead_manager_code, company_code)
|
||||||
|
VALUES ('M001', 'SM001', 'LM001', 'C001'),
|
||||||
|
('M002', 'SM002', 'LM002', 'C002');
|
||||||
|
|
||||||
|
INSERT INTO Employee (employee_code, manager_code, senior_manager_code, lead_manager_code, company_code)
|
||||||
|
VALUES ('E001', 'M001', 'SM001', 'LM001', 'C001'),
|
||||||
|
('E002', 'M001', 'SM001', 'LM001', 'C001'),
|
||||||
|
('E003', 'M002', 'SM002', 'LM002', 'C002'),
|
||||||
|
('E004', 'M002', 'SM002', 'LM002', 'C002');
|
||||||
|
|
||||||
|
|
||||||
|
-- QUERY
|
||||||
|
|
||||||
|
SELECT DISTINCT C.company_code,
|
||||||
|
C.founder,
|
||||||
|
COALESCE(LM.total_lead_managers, 0) AS total_lead_managers,
|
||||||
|
COALESCE(SM.total_senior_managers, 0) AS total_senior_managers,
|
||||||
|
COALESCE(M.total_managers, 0) AS total_managers,
|
||||||
|
COALESCE(E.total_employees, 0) AS total_employees
|
||||||
|
FROM Company AS C
|
||||||
|
LEFT JOIN (SELECT DISTINCT company_code,
|
||||||
|
COUNT(lead_manager_code) AS total_lead_managers
|
||||||
|
FROM Lead_Manager
|
||||||
|
GROUP BY company_code) AS LM ON C.company_code = LM.company_code
|
||||||
|
LEFT JOIN (SELECT DISTINCT company_code,
|
||||||
|
COUNT(senior_manager_code) AS total_senior_managers
|
||||||
|
FROM Senior_Manager
|
||||||
|
GROUP BY company_code) AS SM ON C.company_code = SM.company_code
|
||||||
|
LEFT JOIN (SELECT DISTINCT company_code,
|
||||||
|
COUNT(manager_code) AS total_managers
|
||||||
|
FROM Manager
|
||||||
|
GROUP BY company_code) AS M ON C.company_code = M.company_code
|
||||||
|
LEFT JOIN (SELECT DISTINCT company_code,
|
||||||
|
COUNT(employee_code) AS total_employees
|
||||||
|
FROM Employee
|
||||||
|
GROUP BY company_code) AS E ON C.company_code = E.company_code
|
||||||
|
ORDER BY C.company_code;
|
@ -0,0 +1,48 @@
|
|||||||
|
WITH city_counts AS (SELECT COUNT(CITY) AS total_cities,
|
||||||
|
COUNT(DISTINCT CITY) AS distinct_cities
|
||||||
|
FROM STATION)
|
||||||
|
SELECT total_cities - distinct_cities AS city_difference
|
||||||
|
FROM city_counts;
|
||||||
|
-- city_counts is a CTE (Common Table Expression )
|
||||||
|
-- it is a temp table, which in this case has just one row
|
||||||
|
|
||||||
|
|
||||||
|
-- Query the list of CITY names from STATION which have vowels (i.e., a, e, i, o, and u) as both their first and last characters.
|
||||||
|
-- Your result cannot contain duplicates.
|
||||||
|
SELECT DISTINCT CITY
|
||||||
|
FROM STATION
|
||||||
|
WHERE CITY REGEXP '^[aeiouAEIOU].*[aeiouAEIOU]$';
|
||||||
|
|
||||||
|
SELECT DISTINCT CITY
|
||||||
|
FROM STATION
|
||||||
|
WHERE LOWER(SUBSTR(CITY, 1, 1)) IN ('a', 'e', 'i', 'o', 'u')
|
||||||
|
AND LOWER(SUBSTR(CITY, LENGTH(CITY), 1)) IN ('a', 'e', 'i', 'o', 'u');
|
||||||
|
|
||||||
|
-- NOT start with vowels
|
||||||
|
SELECT DISTINCT CITY
|
||||||
|
FROM STATION
|
||||||
|
WHERE CITY REGEXP '^[^aeiouAEIOU]'; -- ^ae.. negates the expression
|
||||||
|
|
||||||
|
|
||||||
|
-- NOT end with vowels
|
||||||
|
SELECT DISTINCT CITY
|
||||||
|
FROM STATION
|
||||||
|
WHERE CITY REGEXP '[^aeiouAEIOU]$'; -- ^ae.. negates the expression
|
||||||
|
|
||||||
|
-- NOT start or END with vowels
|
||||||
|
SELECT DISTINCT CITY
|
||||||
|
FROM STATION
|
||||||
|
WHERE CITY REGEXP '^[^aeiouAEIOU]'
|
||||||
|
AND CITY REGEXP '[^aeiouAEIOU]$';
|
||||||
|
|
||||||
|
|
||||||
|
-- order by last 3 characters, then by ID
|
||||||
|
SELECT NAME FROM STUDENTS
|
||||||
|
WHERE MARKS > 75
|
||||||
|
ORDER BY SUBSTR(NAME, -3), ID;
|
||||||
|
|
||||||
|
|
||||||
|
SELECT CITY, LENGTH(CITY) AS NAME_LENGTH
|
||||||
|
FROM STATION
|
||||||
|
ORDER BY LENGTH(CITY) DESC, CITY ASC
|
||||||
|
LIMIT 1;
|
@ -0,0 +1,53 @@
|
|||||||
|
-- Create the HACKERS table
|
||||||
|
CREATE TABLE HACKERS
|
||||||
|
(
|
||||||
|
hacker_id INT PRIMARY KEY,
|
||||||
|
name VARCHAR(255) NOT NULL
|
||||||
|
);
|
||||||
|
|
||||||
|
-- Create the SUBMISSIONS table
|
||||||
|
CREATE TABLE SUBMISSIONS
|
||||||
|
(
|
||||||
|
submission_id INT PRIMARY KEY,
|
||||||
|
hacker_id INT,
|
||||||
|
challenge_id INT,
|
||||||
|
score INT,
|
||||||
|
FOREIGN KEY (hacker_id) REFERENCES HACKERS (hacker_id)
|
||||||
|
);
|
||||||
|
|
||||||
|
-- Optional: Insert some sample data into HACKERS
|
||||||
|
INSERT INTO HACKERS (hacker_id, name)
|
||||||
|
VALUES (1, 'Alice'),
|
||||||
|
(2, 'Bob'),
|
||||||
|
(3, 'Charlie');
|
||||||
|
|
||||||
|
-- Optional: Insert some sample data into SUBMISSIONS
|
||||||
|
INSERT INTO SUBMISSIONS (submission_id, hacker_id, challenge_id, score)
|
||||||
|
VALUES (101, 1, 1001, 95),
|
||||||
|
(102, 1, 1002, 90),
|
||||||
|
(103, 2, 1001, 85),
|
||||||
|
(104, 3, 1003, 80);
|
||||||
|
|
||||||
|
-- Select data to verify the setup
|
||||||
|
SELECT *
|
||||||
|
FROM HACKERS;
|
||||||
|
SELECT *
|
||||||
|
FROM SUBMISSIONS;
|
||||||
|
|
||||||
|
|
||||||
|
SELECT H.hacker_id,
|
||||||
|
H.name,
|
||||||
|
HTS.total_score
|
||||||
|
FROM HACKERS H
|
||||||
|
JOIN
|
||||||
|
(SELECT MaxScores.hacker_id,
|
||||||
|
SUM(MaxScores.max_score) AS total_score
|
||||||
|
FROM (SELECT S.hacker_id,
|
||||||
|
MAX(S.score) AS max_score
|
||||||
|
FROM SUBMISSIONS S
|
||||||
|
GROUP BY S.hacker_id,
|
||||||
|
S.challenge_id) AS MaxScores
|
||||||
|
GROUP BY MaxScores.hacker_id
|
||||||
|
HAVING SUM(MaxScores.max_score) > 0) AS HTS ON H.hacker_id = HTS.hacker_id
|
||||||
|
ORDER BY HTS.total_score DESC,
|
||||||
|
H.hacker_id;
|
@ -0,0 +1,39 @@
|
|||||||
|
-- CREATE
|
||||||
|
CREATE TABLE CITY
|
||||||
|
(
|
||||||
|
ID INT PRIMARY KEY,
|
||||||
|
NAME VARCHAR(255) NOT NULL,
|
||||||
|
COUNTRYCODE VARCHAR(3) NOT NULL,
|
||||||
|
DISTRICT VARCHAR(255) NOT NULL,
|
||||||
|
POPULATION INT NOT NULL
|
||||||
|
);
|
||||||
|
|
||||||
|
-- INSERT
|
||||||
|
INSERT INTO CITY (ID, NAME, COUNTRYCODE, DISTRICT, POPULATION)
|
||||||
|
VALUES (1, 'Tokyo', 'JPN', 'Tokyo', 13929286),
|
||||||
|
(2, 'Delhi', 'IN', 'Delhi', 16787941),
|
||||||
|
(3, 'Shanghai', 'CN', 'Shanghai', 24183300),
|
||||||
|
(4, N'São Paulo', 'BR', N'São Paulo', 12106920),
|
||||||
|
(5, 'Mumbai', 'IN', 'Maharashtra', 12442373),
|
||||||
|
(6, 'Cairo', 'EG', 'Cairo', 9500000),
|
||||||
|
(7, 'Dhaka', 'BD', 'Dhaka', 8906039),
|
||||||
|
(8, 'Mexico City', 'MX', 'Mexico City', 9209944),
|
||||||
|
(9, 'Beijing', 'CN', 'Beijing', 21542000),
|
||||||
|
(10, 'Osaka', 'JPN', 'Osaka Prefecture', 8839469);
|
||||||
|
|
||||||
|
-- QUERY
|
||||||
|
|
||||||
|
SELECT ROUND(AVG(POPULATION), 0) AS average_population
|
||||||
|
FROM CITY;
|
||||||
|
|
||||||
|
SELECT SUM(POPULATION)
|
||||||
|
FROM CITY
|
||||||
|
WHERE COUNTRYCODE = 'JPN';
|
||||||
|
|
||||||
|
|
||||||
|
SELECT MAX(POPULATION) - MIN(POPULATION) AS population_difference
|
||||||
|
FROM CITY;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
DROP TABLE CITY;
|
@ -0,0 +1,4 @@
|
|||||||
|
main =
|
||||||
|
-- print "Hello World!"
|
||||||
|
-- putStr "Hello World!"
|
||||||
|
putStrLn "Hello World!"
|
Loading…
Reference in new issue