-- ═══════════════════════════════════════════════════════════
-- 📊 SQL ЗАПРОСЫ ДЛЯ АНАЛИТИКИ ПОЛЬЗОВАТЕЛЕЙ
-- ═══════════════════════════════════════════════════════════

USE mvp_career;

-- ───────────────────────────────────────────────────────────
-- 1. ОБЩАЯ СТАТИСТИКА ПОЛЬЗОВАТЕЛЕЙ
-- ───────────────────────────────────────────────────────────

-- Всего пользователей по типам
SELECT 
    user_type as 'Тип пользователя',
    COUNT(*) as 'Количество',
    ROUND(COUNT(*) * 100.0 / (SELECT COUNT(*) FROM sessions), 2) as 'Процент'
FROM sessions 
GROUP BY user_type
ORDER BY COUNT(*) DESC;

-- ───────────────────────────────────────────────────────────
-- 2. АНОНИМНЫЕ ПОЛЬЗОВАТЕЛИ (ГОСТИ)
-- ───────────────────────────────────────────────────────────

-- Сколько всего анонимных пользователей
SELECT COUNT(*) as 'Всего анонимных гостей'
FROM sessions 
WHERE user_type = 'anonymous';

-- Сколько гостей ОСТАВИЛИ данные
SELECT COUNT(DISTINCT ud.session_id) as 'Гости с данными'
FROM user_data ud
JOIN sessions s ON ud.session_id = s.id
WHERE s.user_type = 'anonymous';

-- Сколько гостей НЕ оставили данные
SELECT 
    (SELECT COUNT(*) FROM sessions WHERE user_type = 'anonymous') - 
    (SELECT COUNT(DISTINCT ud.session_id) 
     FROM user_data ud 
     JOIN sessions s ON ud.session_id = s.id 
     WHERE s.user_type = 'anonymous')
    as 'Гости БЕЗ данных';

-- ───────────────────────────────────────────────────────────
-- 3. КОРПОРАТИВНЫЕ СОТРУДНИКИ
-- ───────────────────────────────────────────────────────────

-- Всего корпоративных сотрудников
SELECT COUNT(*) as 'Всего сотрудников'
FROM sessions 
WHERE user_type = 'employee';

-- Сотрудники по компаниям
SELECT 
    c.name as 'Компания',
    COUNT(ce.id) as 'Сотрудников'
FROM companies c
LEFT JOIN corporate_employees ce ON c.id = ce.company_id
GROUP BY c.id, c.name
ORDER BY COUNT(ce.id) DESC;

-- ───────────────────────────────────────────────────────────
-- 4. PRO ПОЛЬЗОВАТЕЛИ
-- ───────────────────────────────────────────────────────────

-- Сколько купили PRO
SELECT 
    COUNT(*) as 'PRO пользователей',
    ROUND(COUNT(*) * 100.0 / (SELECT COUNT(*) FROM sessions), 2) as 'Конверсия в PRO, %'
FROM sessions 
WHERE is_pro = 1;

-- PRO пользователи по типам
SELECT 
    user_type as 'Тип',
    COUNT(*) as 'PRO пользователей'
FROM sessions 
WHERE is_pro = 1
GROUP BY user_type;

-- ───────────────────────────────────────────────────────────
-- 5. ДЕТАЛЬНАЯ СТАТИСТИКА
-- ───────────────────────────────────────────────────────────

-- Полная статистика по пользователям
SELECT 
    'Всего пользователей' as 'Метрика',
    COUNT(*) as 'Значение'
FROM sessions

UNION ALL

SELECT 
    'Анонимные гости (всего)',
    COUNT(*)
FROM sessions WHERE user_type = 'anonymous'

UNION ALL

SELECT 
    '├─ Гости с данными',
    COUNT(DISTINCT ud.session_id)
FROM user_data ud
JOIN sessions s ON ud.session_id = s.id
WHERE s.user_type = 'anonymous'

UNION ALL

SELECT 
    '└─ Гости без данных',
    (SELECT COUNT(*) FROM sessions WHERE user_type = 'anonymous') - 
    (SELECT COUNT(DISTINCT ud.session_id) 
     FROM user_data ud 
     JOIN sessions s ON ud.session_id = s.id 
     WHERE s.user_type = 'anonymous')

UNION ALL

SELECT 
    'Корпоративные сотрудники',
    COUNT(*)
FROM sessions WHERE user_type = 'employee'

UNION ALL

SELECT 
    'PRO пользователи',
    COUNT(*)
FROM sessions WHERE is_pro = 1

UNION ALL

SELECT 
    'Всего компаний',
    COUNT(*)
FROM companies;

-- ───────────────────────────────────────────────────────────
-- 6. ПОСЛЕДНИЕ ПОЛЬЗОВАТЕЛИ (для проверки)
-- ───────────────────────────────────────────────────────────

-- Последние 10 пользователей с их данными
SELECT 
    s.id as 'Session ID',
    s.user_type as 'Тип',
    s.is_pro as 'PRO',
    ud.name as 'Имя',
    ud.age as 'Возраст',
    ud.city as 'Город',
    ce.last_name as 'Фамилия (сотрудник)',
    c.name as 'Компания',
    s.created_at as 'Создан'
FROM sessions s
LEFT JOIN user_data ud ON s.id = ud.session_id
LEFT JOIN corporate_employees ce ON s.id = ce.session_id
LEFT JOIN companies c ON ce.company_id = c.id
ORDER BY s.created_at DESC
LIMIT 10;

-- ═══════════════════════════════════════════════════════════
-- КОНЕЦ
-- ═══════════════════════════════════════════════════════════

