create table sales ( order_line int PRIMARY KEY, order_id varchar, order_date date, ship_date date, ship_mode varchar, customer_id varchar, product_id varchar, sales decimal, quantity int, discount decimal, profit decimal ); -- insert into sales values (1,'CA-2016-152156', '11/8/2016','11/11/2016','Second Class','CG-12520','FUR-BO-10001798',261.96,2,0,41.9136), (2,'CA-2016-152156','11/8/2016','11/11/2016','Second Class','CG-12520','FUR-CH-10000454',731.94,3,0,219.582), (3,'CA-2016-138688','6/12/2016','6/16/2016','Second Class','DV-13045','OFF-LA-10000240',14.62,2,0,6.8714), (4,'US-2015-108966','10/11/2015','10/18/2015','Standard Class','SO-20335','FUR-TA-10000577',957.5775,5,0.45,-383.031), (5,'US-2015-108966','10/11/2015','10/18/2015','Standard Class','SO-20335','OFF-ST-10000760',22.368,2,0.2,2.5164), (6,'CA-2014-115812','6/9/2014','6/14/2014','Standard Class','BH-11710','FUR-FU-10001487',48.86,7,0,14.1694), (7,'CA-2014-115812','6/9/2014','6/14/2014','Standard Class','BH-11710','OFF-AR-10002833',7.28,4,0,1.9656), (8,'CA-2014-115812','6/9/2014','6/14/2014','Standard Class','BH-11710','TEC-PH-10002275',907.152,6,0.2,90.7152), (10,'CA-2014-115812','6/9/2014','6/14/2014','Standard Class','BH-11710','OFF-BI-10003910',18.504,3,0.2,5.7825), (16,'CA-2014-115812','6/9/2014','6/14/2014','Standard Class','BH-11710','OFF-AP-10002892',114.9,5,0,34.47), (12,'CA-2014-115812','6/9/2014','6/14/2014','Standard Class','BH-11710','FUR-TA-10001539',1706.184,9,0.2,85.3092), (22,'CA-2014-115812','6/9/2014','6/14/2014','Standard Class','BH-11710','TEC-PH-10002033',911.424,4,0.2,68.3568), (33,'CA-2017-114412','4/15/2017','4/20/2017','Standard Class','AA-10480','OFF-PA-10002365',15.552,3,0.2,5.4432), (44,'CA-2016-161389','12/5/2016','12/10/2016','Standard Class','IM-15070','OFF-BI-10003656',407.976,3,0.2,132.5922), (37,'US-2015-118983','11/22/2015','11/26/2015','Standard Class','HP-14815','OFF-AP-10002311',68.81,5,0.8,-123.858), (18,'US-2015-118983','11/22/2015','11/26/2015','Standard Class','HP-14815','OFF-BI-10000756',2.544,3,0.8,-3.816), (27,'CA-2014-105893','11/11/2014','11/18/2014','Standard Class','PK-19075','OFF-ST-10004186',665.88,6,0,13.3176), (45,'CA-2014-167164','5/13/2014','5/15/2014','Second Class','AG-10270','OFF-ST-10000107',55.5,2,0,9.99), (50,'CA-2014-143336','8/27/2014','9/1/2014','Second Class','ZD-21925','OFF-AR-10003056',8.56,2,0,2.4824), (49,'CA-2014-143336','8/27/2014','9/1/2014','Second Class','ZD-21925','TEC-PH-10001949',213.48,3,0.2,16.011), (48,'CA-2014-143336','8/27/2014','9/1/2014','Second Class','ZD-21925','OFF-BI-10002215',22.72,4,0.2,7.384), (36,'CA-2016-137330','12/9/2016','12/13/2016','Standard Class','KB-16585','OFF-AR-10000246',19.46,7,0,5.0596), (29,'CA-2016-137330','12/9/2016','12/13/2016','Standard Class','KB-16585','OFF-AP-10001492',60.34,7,0,15.6884), (17,'US-2017-156909','7/16/2017','07/18/2017','Second Class','SF-20065','FUR-CH-10002774',71.372,2,0.3,-1.0196), (46,'CA-2015-106320','9/25/2015','9/30/2015','Standard Class','EB-13870','FUR-TA-10000577',1044.63,3,0,240.2649), (60,'CA-2015-105893','11/11/2015','11/18/2015','Standard Class','TB-21520','OFF-ST-10004186',665.88,6,0,13.3176), (57,'CA-2015-167164','5/13/2016','5/15/2015','Second Class','MA-17560','OFF-ST-10000107',55.5,2,0,9.99), (26,'CA-2016-143336','8/27/2014','9/1/2014','Second Class','MA-17560','OFF-AR-10003056',8.56,2,0,2.4824), (43,'CA-2017-143336','8/27/2014','9/1/2014','Second Class','GH-14485','TEC-PH-10001949',213.48,3,0.2,16.011), (38,'CA-2014-143336','8/27/2014','9/1/2014','Second Class','GH-14485','OFF-BI-10002215',22.72,4,0.2,7.384), (32,'CA-2016-137330','12/9/2016','12/13/2016','Standard Class','SN-20710','OFF-AR-10000246',19.46,7,0,5.0596), (39,'CA-2016-137330','12/9/2016','12/13/2016','Standard Class','SN-20710','OFF-AP-10001492',60.34,7,0,15.6884), (13,'US-2017-156909','7/16/2017','07/18/2017','Second Class','LC-16930','FUR-CH-10002774',71.372,2,0.3,-1.0196), (61,'CA-2015-106320','9/25/2015','9/30/2015','Standard Class','RA-19885','FUR-TA-10000577',1044.63,3,0,240.2649), (66,'CA-2016-137330','12/9/2016','12/13/2016','Standard Class','ES-14080','OFF-AR-10000246',19.46,7,0,5.0596), (69,'CA-2016-137330','12/9/2016','12/13/2016','Standard Class','ES-14080','OFF-AP-10001492',60.34,7,0,15.6884), (67,'US-2017-156909','7/16/2017','07/18/2017','Second Class','PO-18865','FUR-CH-10002774',71.372,2,0.3,-1.0196), (65,'CA-2015-106320','9/25/2015','9/30/2015','Standard Class','LH-16900','FUR-TA-10000577',1044.63,3,0,240.2649), (15,'CA-2015-106320','9/25/2015','9/30/2015','Standard Class','ES-14080','FUR-TA-10000577',1044.63,3,0,240.2649), (24,'CA-2015-106320','9/25/2015','9/30/2015','Standard Class','ON-18715','FUR-TA-10000577',1044.63,3,0,240.2649), (35,'CA-2015-106320','9/25/2015','9/30/2015','Standard Class','TB-21520','FUR-TA-10000577',1044.63,3,0,240.2649); ------customer create table customer ( customer_id varchar UNIQUE, customer_name varchar, Segment varchar, Age int, Country varchar, City varchar, State varchar, Postal_Code int, Region varchar); insert into customer values ('CG-12520','Claire Gute','Consumer',67,'United States','Henderson','Kentucky',42420,'South'), ('DV-13045','Darrin Van Huff','Corporate',31,'United States','Los Angeles','California',90036,'West'), ('SO-20335','Sean O Donnell','Consumer',65,'United States','Fort Lauderdale','Florida',33311,'South'), ('BH-11710','Brosina Hoffman','Consumer',20,'United States','Los Angeles','California',90032,'West'), ('AA-10480','Andrew Allen','Consumer',50,'United States','Concord','North Carolina',28027,'South'), ('IM-15070','Irene Maddox','Consumer',66,'United States','Seattle','Washington',98103,'West'), ('HP-14815','Harold Pawlan','Home Office',20,'United States','Fort Worth','Texas',76106,'Central'), ('PK-19075','Pete Kriz','Consumer',46,'United States','Madison','Wisconsin',53711,'Central'), ('AG-10270','Alejandro Grove','Consumer',18,'United States','West Jordan','Utah',84084,'West'), ('ZD-21925','Zuschuss Donatelli','Consumer',66,'United States','San Francisco','California',94109,'West'), ('KB-16585','Ken Black','Corporate',67,'United States','Fremont','Nebraska',68025,'Central'), ('SF-20065','Sandra Flanagan','Consumer',41,'United States','Philadelphia','Pennsylvania',19140,'East'), ('EB-13870','Emily Burns','Consumer',34,'United States','Orem','Utah',84057,'West'), ('EH-13945','Eric Hoffmann','Consumer',21,'United States','Los Angeles','California',90049,'West'), ('TB-21520','Tracy Blumstein','Consumer',48,'United States','Philadelphia','Pennsylvania',19140,'East'), ('MA-17560','Matt Abelman','Home Office',19,'United States','Houston','Texas',77095,'Central'), ('GH-14485','Gene Hale',' Corporate',28,'United States','Richardson','Texas',75080,'Central'), ('SN-20710','Steve Nguyen','Home Office',46,'United States','Houston','Texas',77041,'Central'), ('LC-16930','Linda Cazamias','Corporate',31,'United States','Naperville','Illinois',60540,'Central'), ('RA-19885','Ruben Ausman','Corporate',51,'United States','Los Angeles','California',90049,'West'), ('ES-14080','Erin Smith','Corporate',20,'United States','Melbourne','Florida',32935,'South'), ('ON-18715','Odella Nelson','Corporate',27,'United States','Eagan','Minnesota',55122,'Central'), ('PO-18865','Patrick O Donnell','Consumer',64,'United States','Westland','Michigan',48185,'Central'), ('LH-16900','Lena Hernandez','Consumer',66,'United States','Dover','Delaware',19901,'East'); --select * from sales; --select * from customer; ---------*Excercise-9---- /*select product_id, sum(sales), sum(quantity), count(order_id), max(sales), min(sales),avg(sales) from sales group by product_id order by sum(sales); */ /*select product_id, sum(quantity) from sales group by product_id having sum(quantity) > 5; */ ----------------------CONDITIONAL STATEMENT------------------- -----------*CASE WHEN /*SELECT *, CASE WHEN quantity <= 3 THEN 'LESS' WHEN quantity >= 4 AND quantity < 7 THEN 'AVERAGE' ELSE 'HIGH' END AS SALES_PICK FROM SALES; */ /*SELECT product_id, discount, CASE WHEN discount = 0 THEN 'NO DISCOUNT' WHEN discount >= 0.45 THEN 'HIGH' ELSE 'LESS' END AS DISCOUNT_DETAILS FROM SALES; */ ------------------------JOINS------------------- -----*SALES TABLE FOR 2014 CREATE TABLE SALES_2014 AS SELECT * FROM SALES WHERE ship_date BETWEEN '2014-01-01' AND '2014-12-31'; --SELECT COUNT(*) FROM SALES_2014; --SELECT COUNT(DISTINCT customer_id) FROM SALES_2014; ------*CUSTOMER AGE BT 20 TO 60----- CREATE TABLE CUSTOMER_20_60 AS SELECT * FROM CUSTOMER WHERE AGE BETWEEN 20 AND 60; --SELECT COUNT(*) FROM CUSTOMER_20_60; ----BH-11710 --PRESENT IN BOTH TABLE ----AG-10270 --PRESENT ONLY IN SALES_2014 ----TB-21520 --PRESENT ONLY IN CUSTOMER_20_60 -------*INNER/SIMPLE ---- /*SELECT A.order_line, A.product_id, A.customer_id, A.sales, B.customer_name, B.Age FROM SALES_2014 AS A INNER JOIN CUSTOMER_20_60 AS B ON A.customer_id = B.customer_id ORDER BY customer_id; */ -------*LEFT----- /*SELECT A.order_line, A.product_id, A.customer_id, A.sales, B.customer_name, B.Age FROM SALES_2014 AS A LEFT JOIN CUSTOMER_20_60 AS B ON A.customer_id = B.customer_id ORDER BY customer_id; */ -------*RIGHT----- --B.customer_id TO SEE THOSE CUSROMERS IN CUSTOMER_20_60 TABLE. /*SELECT A.order_line, A.product_id, B.customer_id, A.sales, B.customer_name, B.Age FROM SALES_2014 AS A RIGHT JOIN CUSTOMER_20_60 AS B ON A.customer_id = B.customer_id ORDER BY customer_id; -------*FULL----- SELECT A.order_line, A.product_id, A.customer_id, A.sales, B.customer_name, B.Age, B.customer_id FROM SALES_2014 AS A FULL JOIN CUSTOMER_20_60 AS B ON A.customer_id = B.customer_id ORDER BY A.customer_id, B.customer_id; */ -------*CROSS JOIN----- /*CREATE TABLE YEAR_VALUES (YYYY INT); CREATE TABLE MONTH_VALUES (MM INT); INSERT INTO YEAR_VALUES VALUES (2020),(2021),(2022),(2023),(2024); INSERT INTO MONTH_VALUES VALUES (01),(02),(03),(04),(05),(06),(07),(08),(09),(10),(11),(12); SELECT * FROM YEAR_VALUES, MONTH_VALUES; ------OR--- SELECT A.YYYY, B.MM FROM YEAR_VALUES AS A, MONTH_VALUES AS B ORDER BY A.YYYY, B.MM; */ ------------*EXCEPT---------------- /*SELECT customer_id FROM SALES_2014 EXCEPT SELECT customer_id FROM CUSTOMER_20_60 ORDER BY customer_id; ----------*UNION---- SELECT customer_id FROM SALES_2014 UNION SELECT customer_id FROM CUSTOMER_20_60 ORDER BY customer_id; */ ---------EXCERISE 10----- /* SELECT SUM(A.sales), B.STATE FROM SALES_2014 AS A LEFT JOIN CUSTOMER_20_60 AS B ON A.customer_id = B.customer_id GROUP BY B.STATE; */ /*SELECT A.customer_name, A.customer_id, A.Segment, SUM(B.SALES), SUM(B.quantity), B.customer_id FROM CUSTOMER_20_60 AS A FULL JOIN SALES_2014 AS B ON A.customer_id = B.customer_id GROUP BY A.customer_name,A.customer_id, A.Segment, B.SALES, B.quantity, B.customer_id; */ -------------*SUBQUERY-------- ------*SUBQUERY IN WHERE------ /*SELECT * FROM SALES WHERE customer_id IN ( SELECT DISTINCT customer_id FROM CUSTOMER WHERE Age > 65); -----(OR)------MESSY BETTER CHOOSE SUBQUERY--- SELECT A.order_line,A.order_id,A.customer_id FROM SALES AS A LEFT JOIN CUSTOMER AS B ON A.customer_id = B.customer_id WHERE B.AGE > 65; */ ------------*SUBQUERY IN FROM----- /* SELECT A.customer_id, A.customer_name, A.STATE, B.quantity FROM CUSTOMER AS A LEFT JOIN (SELECT customer_id, SUM(quantity) AS quantity FROM SALES GROUP BY customer_id) AS B ON A.customer_id = B.customer_id ORDER BY B.quantity DESC; */ ------------*SUBQUERY IN SELECT----- /* SELECT customer_id, order_line, ( SELECT customer_name FROM CUSTOMER WHERE CUSTOMER.customer_id = SALES.customer_id) FROM SALES ORDER BY customer_id; */ ---------EXCERISE 11-------- /*SELECT * FROM SALES AS A LEFT JOIN (SELECT customer_name, customer_id, Age, Segment FROM CUSTOMER) AS B ON A.customer_id = B.customer_id ORDER BY A.customer_id; -- SELECT * FROM SALES AS A LEFT JOIN (SELECT customer_name, Age, (SELECT PRODUCT_NAME, CATEGORY FROM PRODUCT WHERE SALES.product_id = PRODUCT.product_id)) AS B ON A.customer_id = B.customer_id ORDER BY A.customer_id; */ ---------------*VIEW--------- --NOT A PHYSICAL TABLE----QUERY TO CREATE VIRTUAL TABLE----WONT TAKE SPACE IN DB-- /* CREATE VIEW LOGISTICS AS SELECT A.order_line, B.customer_name, B.CITY, B.STATE, B.Country FROM SALES AS A INNER JOIN CUSTOMER AS B ON A.customer_id = B.customer_id ORDER BY A.order_line; SELECT * FROM LOGISTICS; DROP VIEW LOGISTICS; SELECT * FROM LOGISTICS ; */ ------------------*INDEX--------- /*CREATE INDEX MON_IDX ON MONTH_VALUES(MM); DROP INDEX MON_IDX; */ ----------EXCERISE 12--------- /* CREATE VIEW DAILY_BILLING AS SELECT order_line, product_id, SALES, discount FROM SALES WHERE order_date <= '9/1/2014'; SELECT * FROM DAILY_BILLING; DROP VIEW DAILY_BILLING; CREATE VIEW DAILY_BILLING AS SELECT order_line, product_id, SALES, discount FROM SALES WHERE order_date IN (SELECT MIN(order_date) FROM SALES); SELECT * FROM DAILY_BILLING; */ -------------*STRING FUNCTIONS------- -------*LENGHTH--------- /*SELECT customer_name, LENGTH(customer_name) AS CHARACTERS_NUM FROM CUSTOMER WHERE Age < 30; --OR LENGTH IN WHERE CLAUSE TOO SELECT customer_name, LENGTH(customer_name) AS CHARACTERS_NUM FROM CUSTOMER WHERE LENGTH(customer_name) <= 10; */ -----------*UPPER/LOWER FUNCTIONS------- --SELECT UPPER('Manoj'); --SELECT LOWER('Kumar'); -----------*REPLACE FUNCTION--------- /*SELECT customer_name, Country, REPLACE(Country,'United States','US') AS COUNTRY_NEW FROM CUSTOMER; */ ------------*TRIM FUNCTIONS------------------ /*SELECT TRIM(LEADING ' ' FROM ' MANOJKUMAR '); SELECT TRIM(TRAILING ' ' FROM ' MANOJKUMAR '); SELECT TRIM(BOTH ' ' FROM ' MANOJKUMAR '); SELECT TRIM(' MANOJKUMAR '); SELECT RTRIM(' MANOJKUMAR ', ' '); SELECT LTRIM(' MANOJKUMAR ', ' '); */ ------------------*CONCAT FUNCTION--------- --SELECT customer_name, '('||CITY||','||STATE||','||Country AS ADDRESS --FROM CUSTOMER; -------------------*SUBSTRING FUNCTION-------- /*SELECT customer_id, customer_name, SUBSTRING(customer_id FOR 2) AS CUST_GROUP FROM CUSTOMER WHERE SUBSTRING(customer_id FOR 2) = 'EB'; SELECT customer_id, customer_name, SUBSTRING(customer_id FROM 4 FOR 5 ) AS CUST_NUM FROM CUSTOMER WHERE SUBSTRING(customer_id FOR 2) = 'KB'; */ ---------------*STRING AGGREGATOR FUNCTION--------- /*SELECT order_id, STRING_AGG(product_id,',') FROM SALES GROUP BY order_id; */ ----------EXCERISE 13------------- /* SELECT Max(length(customer_name)) from CUSTOMER; SELECT order_id, order_date, ship_date, product_id,order_id||','||order_date||','||ship_date AS DELIVERY_DETAILS FROM SALES; SELECT SUBSTRING(product_id FOR 3) AS FIRST, SUBSTRING(product_id FROM 5 FOR 2) AS MIDDLE, SUBSTRING(product_id FROM 8 FOR 8 ) AS LAST FROM SALES; SELECT STATE, STRING_AGG(CITY,',') AS SEG_LOCATION FROM CUSTOMER WHERE SEGMENT IN('Consumer', 'Home Office') GROUP BY STATE; */ ------------MATHEMATICAL FUNCTIONS------------------ ------*CEIL & FLOOR /*SELECT order_line, sales, CEIL(sales) AS S_ROUNDED, FLOOR(sales) AS L_ROUNDED FROM sales WHERE DISCOUNT > 0; */ ---------*RANDOM FUNCTION------------->=0 , <1 -----A= 10 , B=50 -----*BOUNDARIES--->INCLUDED AND EXCLUDED----RANDOM()*(B-A)+A /*SELECT RANDOM(), RANDOM()*40+10 AS DECIMAL_VALUE, FLOOR(RANDOM()*40)+10 AS INT_VALUE; -----*BOUNDARIES--->BOTH BOUNDARIES----RANDOM()*(B-A+1)+A SELECT RANDOM(), RANDOM()*41+10 AS DEC_VALUE, FLOOR(RANDOM()*41)+10 AS INT_VALUE; */ --------*SETSEED FUNCTION------------------ -------= 1.0, = -1.0 /*SELECT SETSEED(0.75); SELECT RANDOM(); ----0.8749104186659835 SELECT RANDOM(); ----0.645017612227381 SELECT RANDOM(); ---- 0.0861753978720401 SELECT SETSEED(0.75); SELECT RANDOM(); ----0.8749104186659835 SELECT RANDOM(); ----0.645017612227381 SELECT RANDOM(); ---- 0.0861753978720401 */ -------------*ROUND FUNCTION---------- /*SELECT order_line, SALES, ROUND(sales) AS INT_SALES FROM SALES ORDER BY SALES DESC; */ --------------*POWER FUNCTION---------- /*SELECT POWER(12,2); SELECT AGE,POWER(AGE,2) FROM CUSTOMER ORDER BY AGE ; */ ----------EXCERISE 14--- /*SELECT customer_name, FLOOR(RANDOM()*31)+20 AS LUCKY_CUSTOMERS FROM CUSTOMER LIMIT 5; --OR---- SELECT customer_name, RANDOM() AS RAND_N FROM CUSTOMER ORDER BY RAND_N LIMIT 5; SELECT FLOOR(SUM(SALES)) FROM SALES; SELECT CEIL(SUM(SALES)) FROM SALES; SELECT ROUND(SUM(SALES)) FROM SALES; ---OR------ SELECT SUM(FLOOR(SALES)) AS LOW_INT_VALUES, SUM(CEIL(SALES)) AS HIGH_INT_VALUES, SUM(ROUND(SALES)) AS ROUND_SALES FROM SALES; */ -----------DATE AND TIME FUNCTION------------------- --SELECT CURRENT_DATE, CURRENT_TIME, CURRENT_TIME(1), CURRENT_TIME(3), CURRENT_TIMESTAMP; ----------AGE FUNCTION------------------- /*SELECT AGE('1998-07-15', '2023-08-29'); SELECT order_line, order_date, ship_date, AGE(SHIP_date,ORDER_date) AS TIME_TAKEN FROM SALES ORDER BY TIME_TAKEN DESC; */ ----------- EXTRACT FUNCTION------------------- /*SELECT EXTRACT(DAY FROM CURRENT_DATE); SELECT CURRENT_TIMESTAMP, EXTRACT(HOUR FROM CURRENT_TIMESTAMP); SELECT order_line, ORDER_date, SHIP_date, (EXTRACT(EPOCH FROM SHIP_date) - EXTRACT(EPOCH FROM ORDER_date)) AS TIME_TAKEN_SEC FROM SALES; SELECT order_line, ORDER_date, SHIP_date, ((EXTRACT(EPOCH FROM SHIP_date) - EXTRACT(EPOCH FROM ORDER_date))/3600) AS SEC_CON_HRS FROM SALES; */ ----------EXCERISE 15---------- SELECT AGE(CURRENT_DATE,'1963-04-06') AS BATMAM_AGE; SELECT EXTRACT(MONTH FROM ORDER_date) AS MONTH, MAX(SALES) AS MAX_SALES FROM SALES WHERE customer_id IN (SELECT customer_id FROM CUSTOMER WHERE STATE = 'California') GROUP BY MONTH ORDER BY MONTH; ---
Write, Run & Share PostgreSQL queries online using OneCompiler's PostgreSQL online editor and compiler for free. It's one of the robust, feature-rich online editor and compiler for PostgreSQL. Getting started with the OneCompiler's PostgreSQL editor is really simple and pretty fast. The editor shows sample boilerplate code when you choose database as 'PostgreSQL' and start writing queries to learn and test online without worrying about tedious process of installation.
PostgreSQL is a open source relational database system and is also knows as Postgres.
CREATE command is used to create a table, schema or an index.
CREATE TABLE table_name (
column1 datatype,
column2 datatype,
....);
ALTER command is used to add, modify or delete columns or constraints from the database table.
ALTER TABLE Table_name ADD column_name datatype;
TRUNCATE command is used to delete the data present in the table but this will not delete the table.
TRUNCATE table table_name;
DROP command is used to delete the table along with its data.
DROP TABLE table_name;
RENAME command is used to rename the table name.
ALTER TABLE table_name1 RENAME to new_table_name1;
INSERT Statement is used to insert new records into the database table.
INSERT INTO table_name (column1, column2, column3, ...) VALUES (value1, value2, value3, ...);
Select statement is used to select data from database tables.
SELECT column1, column2, ...
FROM table_name;
UPDATE statement is used to modify the existing values of records present in the database table.
UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;
DELETE statement is used to delete the existing records present in the database table.
DELETE FROM table_name where condition;