parent
6c93896de9
commit
b84425cb17
@ -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;
|
Loading…
Reference in new issue