Query 1 - Join login attempts with employee office information

SELECT 
    l.login_date,
    l.event_id,
    l.ip_address,
    l.username,
    l.country AS login_country,
    e.office,
    CASE 
        WHEN e.office = 'New York' AND l.country != 'USA' THEN TRUE
        WHEN e.office = 'Toronto' AND l.country != 'Canada' THEN TRUE
        WHEN e.office = 'London' AND l.country != 'UK' THEN TRUE
        WHEN e.office = 'Berlin' AND l.country != 'Germany' THEN TRUE
        WHEN e.office = 'Singapore' AND l.country != 'Singapore' THEN TRUE
        WHEN e.office = 'Nairobi' AND l.country != 'Kenya' THEN TRUE
        ELSE FALSE
    END AS location_mismatch,
    l.success
FROM Employer_dataset.login_attempt l
JOIN Employer_dataset.employees e
ON l.username = e.username;
jointables
jointables

Query 2 - Suspicious login Mismatch

SELECT
login_date,
event_id,
ip_address,
login_country,
office,
location_mismatch,
success,
FROM Employer_dataset.joined_table
WHERE success = FALSE AND location_mismatch = TRUE;
failedlogin
failedlogin

Query 3 - Suspicious login counts by country

SELECT 
    login_country, 
    COUNT(*) AS suspicious_count
FROM  Employer_dataset.joined_table
WHERE success = FALSE AND location_mismatch = TRUE
GROUP BY login_country;
login count
login count

Visualization with Tableau

geomap .

Conclusion