https://www.youtube.com/watch?v=WmY_0shtpdg&list=PLBTZqjSKn0IfuIqbMIqzS-waofsPHMS0E&index=25
-- Create the employees table
CREATE TABLE employees (
employee_id INT,
employee_name VARCHAR(15),
email_id VARCHAR(15)
);
-- Delete all existing records (optional)
DELETE FROM employees;
-- Insert records into the employees table
INSERT INTO employees (employee_id, employee_name, email_id)
VALUES
(101, 'Liam Alton', 'li.al@abc.com'),
(102, 'Josh Day', 'jo.da@abc.com'),
(103, 'Sean Mann', 'se.ma@abc.com'),
(104, 'Evan Blake', 'ev.bl@abc.com'),
(105, 'Toby Scott', 'jo.da@abc.com'),
(106, 'Anjali Chouhan', 'JO.DA@ABC.COM'),
(107, 'Ankit Bansal', 'AN.BA@ABC.COM');
-- Incase of duplicate emails, retain only those in lowercaswe
WITH CTE AS(
SELECT *,ASCII(email_id) AS ASCII_vals,
RANK() OVER (PARTITION BY email_id ORDER BY ASCII(email_id) DESC) AS rn
FROM employees)
SELECT employee_id,employee_name,email_id FROM CTE
WHERE rn = 1;
Most databases are case insensitive, to make mysql case sensitive: -
COLLATE
ALTER TABLE employees
MODIFY email_id VARCHAR(15) CHARACTER SET latin1 COLLATE latin1_general_cs;
WITH CTE AS (
SELECT *,
RANK() OVER (PARTITION BY LOWER(email_id) ORDER BY ASCII(email_id) DESC) AS rn
FROM employees
)
SELECT * FROM CTE WHERE rn = 1;