Aggregate and Mod3 SQL
Aggregate and Mod3 SQL
USE TRAINING;
--INSERT INTO PRODUCT VALUES(44,'PRODUCT1',25);
SELECT * FROM PRODUCT;
---
--ALTER TABLE EXERCISE
ALTER TABLE PRODUCT ADD MFG_DATE DATE DEFAULT '2001-01-01' NOT NULL;
-- Dropping a constraint
ALTER TABLE CUST_ORDER
DROP
DF__CUST_ORDE__o_dat__45F365D3;
------------------------------AGGREGARTION
FUNCTIONS---------------------------------
select avg(
CAST(p_price AS INT)
) from PRODUCT;
--CHECKSUM
SELECT
CHECKSUM(CAST(P_PRICE AS VARCHAR(10)))
as MIN_PRICE
FROM PRODUCT
;
--------------Mathematical FUNCTION
--ABS Function
SELECT ABS(-1)
--Log function
SELECT LOG10(p_PRICE) from PRODUCT
--SQUARE FUNCTION
SELECT p_PRICE,
SQUARE(p_PRICE) from PRODUCT
--CEILING FUNCTION
SELECT CEILING(1.2)
--FLOOR FUNCTION
SELECT FLOOR(1.2)
--ROUND FUNCTION
SELECT ROUND(1.22234,3)
--POWER FUNCTION
SELECT POWER(3,3)
------------------------------DATE FUNCTIONS---------------------------------
--------------Current date and time
SELECT CURRENT_TIMESTAMP
SELECT GETUTCDATE()
SELECT GETDATE()
SELECT SYSDATETIME()
SELECT SYSDATETIMEOFFSET()
SELECT YEAR(
'2017-08-25'
) AS DatePartString; --return as YEAR OF DATE
SELECT SWITCHOFFSET(
GETDATE(),'+10:00'
) AS NEW_DATE
UPDATE TMP_PRODUCT
SET P_PRICE=0
--LOWER Function
SELECT LOWER('NEW YORK');
--UPPER Function
SELECT UPPER('new york');
--REVERSE Function
SELECT REVERSE('NEW YORK');
--SUBSTRING Function
SELECT SUBSTRING('NEW YORK',2,1500);
--REPLACE FUNCTION
SELECT replace ('NEW YORK YORK','23','');
SELECT replace ('KEEP','EE','ET');
SELECT ISNUMERIC('test');
SELECT ISNUMERIC(12345);
----------------WINDOW FUNCTIONS
select *,
RANK() OVER( ORDER BY P_PRICE, p_desc,P_expiry_date ) AS RNK_ASC,
--RANK() OVER( ORDER BY P_PRICE DESC ) AS RNK_DESC,
DENSE_RANK() OVER( ORDER BY P_PRICE ) AS DENSE_RNK,
ROW_NUMBER() OVER( ORDER BY P_PRICE ) AS RN_NUMBER,
CUME_DIST() OVER( ORDER BY P_PRICE ) AS CUM_DIST
FROM
PRODUCT;
SELECT * ,
DENSE_RANK() OVER (PARTITION BY p_name,P_DESC ORDER BY p_PRICE DESC) AS RN
FROM PRODUCT;
--FIRST_VALUE FUNCTION
select *,
FIRST_VALUE(p_price) OVER( PARTITION BY P_NAME ORDER BY P_PRICE ) AS RN
FROM PRODUCT
;
--LAST_VALUE FUNCTION
select *,
LAST_VALUE(p_price) OVER( PARTITION BY p_name ORDER BY P_PRICE
RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING
) AS LV_PRICE_RANGE,
LAST_VALUE(p_price) OVER( PARTITION BY P_NAME ORDER BY P_PRICE
) AS LV_PRICE
FROM PRODUCT;
select *,
LAG(P_ID,1) OVER( ORDER BY p_id ) AS RN
FROM PRODUCT;
----NTILE
select *, NTILE(3) OVER( PARTITION BY P_NAME ORDER BY P_PRICE DESC) AS RN FROM
PRODUCT;
select *,
PERCENT_RANK()
OVER( PARTITION BY P_NAME ORDER BY P_PRICE ) AS RN FROM PRODUCT;
------CASE FUNCTION
SELECT *,
CASE
WHEN P_PRICE <500 THEN '0-500'
WHEN P_PRICE BETWEEN 500 AND 1000 THEN '500-1000'
ELSE '>1000'
END
AS P_PRICE_CATEGORY
FROM PRODUCT ;
UNION
SELECT *, dbo.sales_discount(p_price,0.25) as new_discounted_price
from PRODUCT WHERE P_NAME='Watch'
;
--dropping a function
DROP function sales_discount;