+ add sql exe

master^2
io42630 4 days ago
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…
Cancel
Save