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');

Pasted image 20241116181105.png
RANK()

-- 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;

Pasted image 20241116181621.png

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;