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;
