-- Таблица orders:user_id item_id date order_id==============================================1 1 2021-01-01 11 2 2021-01-01 11 3 2021-02-15 1012 1 2019-12-31 22 2 2020-07-01 2013 4 2022-12-10 34 1 2022-12-11 4 ...-- Поля:-- user_id - идентификатор пользователя-- item_id - идентификатор товара-- date - дата покупки-- order_id - идентификатор заказа-- ## ЗАДАЧА 1:-- Посчитать в одном запросе:-- - количество купленных товаров по дням-- - размер аудитории (кол-во уникальных пользователей) по дням-- - полученную таблицу отсортировать по датеSELECT date,COUNT(item_id),COUNT(distinct user_id)FROM ordersGROUP BY dateORDER BY date-- ## ЗАДАЧА 2:-- Вывести список пользователей, купивших item_id 1 и 3 (купил и товар 1, и товар 3), но не купивших товар 2SELECT user_idFROM(SELECT DICTINCT user_idFROM ordersWHERE item_id = 1) 01INNER JOIN(SELECT DICTINCT user_idFROM ordersWHERE item_id = 3) o2using(user_id)INNER JOIN(SELECT DICTINCT user_idFROM ordersWHERE NOT item_id = 2) o3using(user_id)-- ## ЗАДАЧА 3: (не дорешали)-- Посчитать среднее количество дней между первым и вторым заказом у пользователейSELECT user_id,MIN(date) as first_orderFROM ordersSELECT IFCASE order_number = 1 THEN date, endFROM (SELECTuser_id,ROW_NUMBER() OVER(PARTITION BY user_id ORDER BY date) as order_number,dateFROM orders) o1GROUP BY user_id# Является ли данная строка палиндромом. # Пример:s = 'A man, a plan, a canal, Panama!' #-> Truedef isPolindrom(s: str) -> bool: s = s.lower() new_s = "" for c in s: if c.isalpha(): new_s += c return new_s == new_s[::-1]# Напишите функцию на Python, # которая принимает на вход строку и возвращает максимальную длину # последовательности из двух уникальных символов#ababcababadef func(s): if len(s) < 3: return len(s) l = 0 r = 1 alph = set([s[l], s[r]]) max_len = -1 while r < len(s): while len(alph) < 3 and r < len(s): r += 1 alph.add(s[r]) cur_len = r - l if cur_len > max_len: max_len = cur_len l = r r += 1 return max_len# Представь, что мы работаем в компании которая делает рекламный движок.# Нужно написать функцию, которая на вход принимает баннеры и веса, а на выходе отдает случайный# баннер с вероятностью пропорциональной весу.banners = ["a", "b", "c"]weights = [1, 2, 3]['a', 'b', 'b', 'c', 'c', 'c']обсудили решение, не стали кодить (разбить интервал от 0 до 1 на n отсечек, n - сумма весов, потом математически находить название баннера по случайному числу от 0 до 1)