Proje: Okul Database · Hub: Okul Database — Queries
Okul Analiz Sorguları
Temel Sayımlar
-- Toplam aktif okul
SELECT COUNT(*) FROM school_filters
WHERE deleted_at IS NULL AND is_active = 1;
-- Müşteri olan vs olmayan
SELECT is_customer, COUNT(*) as count
FROM school_filters
WHERE deleted_at IS NULL AND is_active = 1
GROUP BY is_customer;
-- Sektör bazlı dağılım
SELECT sf.sector_id, s.name as sector, COUNT(*) as count
FROM school_filters sf
JOIN sectors s ON s.id = sf.sector_id
WHERE sf.deleted_at IS NULL AND sf.is_active = 1
GROUP BY sf.sector_id, s.name
ORDER BY count DESC;Coğrafi Analiz
-- İl bazlı aktif okul sayısı (Top 10)
SELECT city_name, COUNT(*) as school_count
FROM school_filters
WHERE deleted_at IS NULL AND is_active = 1
GROUP BY city_id, city_name
ORDER BY school_count DESC
LIMIT 10;
-- İl + müşteri bazlı dağılım
SELECT city_name,
SUM(is_customer) as customer_schools,
COUNT(*) - SUM(is_customer) as non_customer_schools,
ROUND(SUM(is_customer) * 100.0 / COUNT(*), 1) as customer_pct
FROM school_filters
WHERE deleted_at IS NULL AND is_active = 1
GROUP BY city_id, city_name
ORDER BY customer_pct DESC;Engagement Analizi
-- Engagement skorlarına göre Top okullar
SELECT school_id, city_name,
lead_count, comment_count, view_count,
py_profile_point
FROM school_filters
WHERE is_customer = 1 AND deleted_at IS NULL
ORDER BY lead_count DESC
LIMIT 20;
-- Günlük engagement trendi (son 30 gün)
SELECT date,
SUM(page_view) as total_views,
SUM(lead_count) as total_leads,
SUM(phone_view) as total_phone_views
FROM school_daily_logs
WHERE date >= DATE_SUB(CURDATE(), INTERVAL 30 DAY)
GROUP BY date
ORDER BY date;Ücret Analizi
-- Sektör bazlı ortalama ücret aralığı
SELECT s.name as sector,
AVG(sf.fee_min) as avg_min_fee,
AVG(sf.fee_max) as avg_max_fee,
MIN(sf.fee_min) as min_fee,
MAX(sf.fee_max) as max_fee
FROM school_filters sf
JOIN sectors s ON s.id = sf.sector_id
WHERE sf.deleted_at IS NULL
AND sf.fee_min > 0
GROUP BY sf.sector_id, s.name;Yorum ve Rating
-- Ortalama okul puanı dağılımı
SELECT ROUND(rating) as rating_floor,
COUNT(*) as review_count
FROM school_comments
WHERE deleted_at IS NULL AND approved_at IS NOT NULL
GROUP BY ROUND(rating)
ORDER BY rating_floor;
-- En çok yorum alan okullar
SELECT school_id, COUNT(*) as comment_count,
AVG(rating) as avg_rating
FROM school_comments
WHERE deleted_at IS NULL AND approved_at IS NOT NULL
GROUP BY school_id
ORDER BY comment_count DESC
LIMIT 10;Related
- table-school-filters — Ana tablo
- domain-schools — Schools domain
- query-lead-funnel — Lead sorguları