Compare commits
No commits in common. 'b84425cb176c2078a852d911b3cc51d45d8e3072' and '12e5244cc80c82eb26cce7a270eecd656025b5b4' have entirely different histories.
b84425cb17
...
12e5244cc8
@ -1,90 +0,0 @@
|
|||||||
-- 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;
|
|
@ -1,48 +0,0 @@
|
|||||||
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;
|
|
@ -1,53 +0,0 @@
|
|||||||
-- 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;
|
|
@ -1,39 +0,0 @@
|
|||||||
-- 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;
|
|
@ -1,4 +0,0 @@
|
|||||||
main =
|
|
||||||
-- print "Hello World!"
|
|
||||||
-- putStr "Hello World!"
|
|
||||||
putStrLn "Hello World!"
|
|
Loading…
Reference in new issue