Складніші запити SQL

Оптимізоване завантаження даних із pandas

Amany Mahfouz

Instructor

Отримання DISTINCT-значень

  • Отримайте унікальні значення для одного чи кількох стовпців за допомогою SELECT DISTINCT
  • Синтаксис:
    SELECT DISTINCT [column names] FROM [table];
    
  • Приберіть дублікати записів:
    SELECT DISTINCT * FROM [table];
    
/* Отримати унікальні адреси та боро */
SELECT DISTINCT incident_address, 
       borough
  FROM hpd311calls;
Оптимізоване завантаження даних із pandas

Агрегатні функції

  • Запитуйте базу напряму для описової статистики
  • Агрегатні функції
    • SUM
    • AVG
    • MAX
    • MIN
    • COUNT
Оптимізоване завантаження даних із pandas

Агрегатні функції

  • SUM, AVG, MAX, MIN
    • Кожна приймає один стовпець
      SELECT AVG(tmax) FROM weather;
      
  • COUNT
    • Кількість рядків, що відповідають умовам запиту
      SELECT COUNT(*) FROM [table_name];
      
    • Кількість унікальних значень у стовпці
      SELECT COUNT(DISTINCT [column_names]) FROM [table_name];
      
Оптимізоване завантаження даних із pandas

GROUP BY

  • Агрегатні функції типовo обчислюють одне підсумкове значення
  • Підсумовуйте дані за категоріями через GROUP BY
  • Не забудьте також вибрати стовпець, за яким групуєте!
/* Отримати кількість звернень щодо сантехніки по боро */
SELECT borough, 
       COUNT(*) 
  FROM hpd311calls
 WHERE complaint_type = 'PLUMBING'
 GROUP BY borough;
Оптимізоване завантаження даних із pandas

Підрахунок за групами

# Створіть рушій бази даних
engine = create_engine("sqlite:///data.db")

# Запишіть запит для підрахунку звернень щодо сантехніки по боро query = """SELECT borough, COUNT(*) FROM hpd311calls WHERE complaint_type = 'PLUMBING' GROUP BY borough;"""
# Виконайте запит і створіть датафрейм plumbing_call_counts = pd.read_sql(query, engine)
Оптимізоване завантаження даних із pandas

Підрахунок за групами

print(plumbing_call_counts)
         borough  COUNT(*)
0          BRONX      2016
1       BROOKLYN      2702
2      MANHATTAN      1413
3         QUEENS       808
4  STATEN ISLAND       178
Оптимізоване завантаження даних із pandas

Давайте потренуємось!

Оптимізоване завантаження даних із pandas

Preparing Video For Download...