Теория
products_data_all

Изменение типов

Некоторые агрегирующие функции работают только с числовыми типами данных. Потому такой запрос не выполнится для books:
Скопировать кодSQL
SELECT AVG(pages) AS average FROM books;
Взгляните на таблицу:
books
idNamegenreauthordate_pubpagespriceratingpub_name
1Капитанская дочка5Александр Пушкин1836-01-011301504.7АСТ
2Отцы и дети1Иван Тургенев1862-01-012402074.7Белый город
3Вишнёвый сад7Антон Чехов1903-01-01601384.4Росмэн
4Война и мир1Лев Толстой1869-01-011274Знание
5Анна Каренина1Лев Толстой1877-01-0110001264.6Эксмо
6Цветы для Элджернона4Дэниел Киз1959-01-012502804.7ЛитРес
7Похороните меня за плинтусом...5Павел Санаев1994-01-011841984.1АСТ
8Зелёная миля9Стивен Кинг1996-01-014201904.8Белый город
9Унесённые ветром1Маргарет Митчел1936-01-01624358Росмэн
10Три товарища1Эрих Мария Ремарк1936-01-014701964.7АСТ
11На Западном фронте без перемен4Эрих Мария Ремарк1929-01-012002734.6Белый город
12Триумфальная арка1Эрих Мария Ремарк1945-01-015202204.7Росмэн
13Чёрный обелиск1Эрих Мария Ремарк1956-01-014804204.6ЛитРес
14Ночь в Лиссабоне1Эрих Мария Ремарк1961-01-012501874.7ЛитРес
15Жизнь взаймы1Эрих Мария Ремарк1959-01-012402404.6ЛитРес
16Станция на горизонте1Эрих Мария Ремарк1927-01-012104.1Росмэн
17Евгений Онегин1Александр Пушкин1832-01-017363304.7Росмэн
Данные в выборке выглядят как числа, но в базе данных хранятся как строки. В жизни такое встречается часто — обычно из-за ошибок проектирования базы данных.
Изменим тип данных столбца в самом SQL-запросе. Типы преобразуют конструкцией CAST (от англ. «преобразование»):
Скопировать кодSQL
CAST (название_столбца AS тип_данных)
Название_столбца — это поле, тип данных которого нужно преобразовать. Тип_данных — тип, в который данные нужно перевести. Есть и другая форма записи:
Скопировать кодSQL
название_столбца :: тип_данных
Осталось познакомиться с типами данных в SQL.

Числовые типы данных

integer — целочисленный тип, аналогичный типу int в Python. В SQL диапазон целых чисел от -2147483648 до 2147483647.
real — число с плавающей точкой, как float в Python. Точность числа типа real до 6 десятичных разрядов.

Строковые типы данных

'Практикум' — значение строкового типа, в SQL запросе его заключают в одинарные кавычки.
varchar(n) — строка переменной длины, где n — ограничение. Этот тип данных похож на string в Python, но в отличие от него ограничен по длине: в поле можно занести любую строку короче, чем n символов.
text — строка любой длины. Полный аналог string в Python.

Дата и время

Любые вводимые значения даты или времени заключают в одинарные кавычки.
timestamp — дата и время. В формате timestamp чаще всего хранят события, происходящие несколько раз за день. Например, логи пользователей сайта.
date — дата.

Логический

boolean — логический тип данных. В SQL есть три варианта значений TRUE — «истина», FALSE — «ложь» и NULL — «неизвестно».
Вы изучили распространённые типы данных. Есть и много других. Вы можете познакомиться с ними самостоятельно в документации.
Вернёмся к «нерешаемой» задаче. Найдём среднее число страниц двумя способами:
Скопировать кодSQL
SELECT AVG(pages :: integer) AS average FROM books;
или:
Скопировать кодSQL
SELECT AVG (CAST(pages AS integer)) AS average FROM books;
Скопировать кодSQL
428,7058824
В данных о молочной продукции тоже есть ошибка. Данные поля weight записаны как строки, хотя на самом деле это числа. По такому поводу стоит написать баг-репорт. А пока исправьте эту ошибку локально, в запросе.
Задача   1 / 2
1.
Напишите запрос, который найдёт средний вес (weight) товаров из таблицы products_data_all в граммах (где units='г'). Назовите переменную average. Измените тип данных в столбце weight на число с плавающей точкой.
Подсказка
Измените тип значений в столбце weight конструкцией weight::real. Найдите среднее значение по столбцу агрегирующей функцией AVG(). Сделайте срез по данным, единицы измерения которых — граммы, так: WHERE units='г'.
2.
Напишите запрос, который найдёт максимальный вес продукта в категории 'молоко и сливки'. Воспользуйтесь конструкцией CAST AS для приведения значений к числу с плавающей точкой и назовите переменную max_weight.
Подсказка
Преобразуйте значение weight к числу с плавающей точкой, а затем примените функцию MAX().
id_productnamecategoryunitsweightpricedate_updid_storename_store
3Молоко цельное пастеризованное Ваша Ферма 3,4-6,0%, 1 лмолоко и сливкил1692019-06-01 00:00:000Молочные вкусности
5Молоко пастеризованное Искренне Ваш отборное 3,4-6,0%, 900 млмолоко и сливкимлnan782019-06-01 00:00:000Молочные вкусности
8Молоко стерилизованное Можайское 3,2%, 450 млмолоко и сливкимл450762019-06-01 00:00:000Молочные вкусности
10Молоко ультрапастеризованное Простоквашино 2,5%, 950 млмолоко и сливкимл950842019-06-01 00:00:000Молочные вкусности
11Молоко ультрапастеризованное Домик в деревне 0,5%, 950 гмолоко и сливкиг950992019-06-01 00:00:000Молочные вкусности
12Молоко ультрапастеризованное Вкуснотеево 2,5%, 200 гмолоко и сливкиг200232019-06-01 00:00:000Молочные вкусности
16Молоко ультрапастеризованное Parmalat 1,8%, 200 гмолоко и сливкиг200242019-06-01 00:00:000Молочные вкусности
17Молоко пастеризованное Домик в деревне отборное 3,5-4,5%, 1,4 лмолоко и сливкил1.41392019-06-01 00:00:000Молочные вкусности
18Молоко пастеризованное Домик в деревне 2,5%, 1,4 лмолоко и сливкил1.41292019-06-01 00:00:000Молочные вкусности
20Молоко ультрапастеризованное Авида 1,5%, 1 лмолоко и сливкил1542019-06-01 00:00:000Молочные вкусности
21Молоко цельное Деревенская жизнь Айширское 2,5-4,5%, 0,95 лмолоко и сливкил0.95922019-06-01 00:00:000Молочные вкусности
25Молоко ультрапастеризованное Parmalat Low Lactose низколактозное 1,8%, 200 млмолоко и сливкимл200292019-06-01 00:00:000Молочные вкусности
26Молоко ультрапастеризованное Parmalat Low Lactose низколактозное 3,5%, 1 лмолоко и сливкил1992019-06-01 00:00:000Молочные вкусности
27Молоко низколактозное Parmalat Low Lactose 0,05%, 1 лмолоко и сливкилnan842019-06-01 00:00:000Молочные вкусности
28Молоко топленое стерилизованное Можайское 6%, 0,45 лмолоко и сливкил0.45892019-06-01 00:00:000Молочные вкусности
29Молоко топленое пастеризованное Домик в деревне 3,2%, 925 млмолоко и сливкимл925992019-06-01 00:00:000Молочные вкусности
31Молоко топленое Рузское 2,5%, 500 гмолоко и сливкиг500722019-06-01 00:00:000Молочные вкусности
34Молоко топленое Вологодское лето 4%, 930 млмолоко и сливкимл930692019-06-01 00:00:000Молочные вкусности
35Молоко топленое Ваша Ферма, 0,5 лмолоко и сливкил0.5882019-06-01 00:00:000Молочные вкусности
38Молоко пастеризованное Простоквашино отборное 3,4-4,5%, 930 млмолоко и сливкимл930752019-06-01 00:00:000Молочные вкусности
39Молоко пастеризованное Домик в деревне отборное 3,7-4,5%, 930 млмолоко и сливкимл930642019-06-01 00:00:000Молочные вкусности
41Молоко цельное пастеризованное Рузское 3,2-4,0%, 1 кгмолоко и сливкикгnan1392019-06-01 00:00:000Молочные вкусности
46Молоко топленое Бежин луг 3,2%, 925 гмолоко и сливкигnan742019-06-01 00:00:000Молочные вкусности
49Молоко пастеризованное Вологодское лето отборное 3,4-4,0%, 930 млмолоко и сливкимл930752019-06-01 00:00:000Молочные вкусности
50Молоко пастеризованное Углече Поле органическое отборное 3,5-5,2%, 1 лмолоко и сливкил11372019-06-01 00:00:000Молочные вкусности
58Молоко ультрапастеризованное Домик в деревне 1,5%, 950 гмолоко и сливкиг950822019-06-01 00:00:000Молочные вкусности
59Молоко ультрапастеризованное Домик в деревне 3,2%, 1,45 кгмолоко и сливкикг1.451562019-06-01 00:00:000Молочные вкусности
60Молоко стерилизованное Можайское 1,5%, 450 млмолоко и сливкимл450712019-06-01 00:00:000Молочные вкусности
61Молоко ультрапастеризованное Parmalat 3,5%, 1 лмолоко и сливкил1712019-06-01 00:00:000Молочные вкусности
62Молоко ультрапастеризованное Parmalat 1,8%, 1 лмолоко и сливкилnan592019-06-01 00:00:000Молочные вкусности
63Молоко ультрапастеризованное Parmalat 3,5%, 200 млмолоко и сливкимл200242019-06-01 00:00:000Молочные вкусности
64Молоко ультрапастеризованное Parmalat dietalat с витаминами 0,5%, 1 лмолоко и сливкил1762019-06-01 00:00:000Молочные вкусности
70Молоко пастеризованное Parmalat отборное 3,4-6%, 1 лмолоко и сливкил1772019-06-01 00:00:000Молочные вкусности
73Молоко ультрапастеризованное Домик в деревне 3,5%, 200 гмолоко и сливкиг200322019-06-01 00:00:000Молочные вкусности
74Молоко ультрапастеризованное Простоквашино 1,5%, 950 млмолоко и сливкимл950942019-06-01 00:00:000Молочные вкусности
75Молоко пастеризованное Простоквашино 2,5%, 930 млмолоко и сливкимл930842019-06-01 00:00:000Молочные вкусности
76Молоко ультрапастеризованное Домик в деревне 3,2%, 950 гмолоко и сливкиг950872019-06-01 00:00:000Молочные вкусности
77Молоко ультрапастеризованное Вологодское 3,2%, 970 млмолоко и сливкимл970662019-06-01 00:00:000Молочные вкусности
78Молоко ультрапастеризованное Домик в деревне 3,5%, 950 гмолоко и сливкиг950892019-06-01 00:00:000Молочные вкусности
79Молоко ультрапастеризованное Домик в деревне 2,5%, 950 гмолоко и сливкигnan612019-06-01 00:00:000Молочные вкусности
81Молоко пастеризованное Домик в деревне 2,5%, 930 млмолоко и сливкимл930892019-06-01 00:00:000Молочные вкусности
82Молоко ультрапастеризованное Вкуснотеево 3,2%, 200 гмолоко и сливкиг200252019-06-01 00:00:000Молочные вкусности
84Молоко ультрапастеризованное Домик в деревне 6%, 950 гмолоко и сливкиг9501282019-06-01 00:00:000Молочные вкусности
96Молоко пастеризованное Простоквашино 1,5%, 930 млмолоко и сливкимл930762019-06-01 00:00:000Молочные вкусности
98Молоко пастеризованное Вкуснотеево 3,8%, 900 гмолоко и сливкиг900662019-06-01 00:00:000Молочные вкусности
104Молоко пастеризованное Авида с крышечкой 3,2%, 1 лмолоко и сливкил1622019-06-01 00:00:000Молочные вкусности
105Молоко ультрапастеризованное Авида 3,2%, 1 лмолоко и сливкил1632019-06-01 00:00:000Молочные вкусности
108Молоко пастеризованное Рузское 2,5%, 1000 гмолоко и сливкиг10001442019-06-01 00:00:000Молочные вкусности
119Молоко Бежин луг пастеризованное 3,2%, 900 гмолоко и сливкиг900632019-06-01 00:00:000Молочные вкусности
120Масло сливочное Простоквашино 72,5%, 180 гмасло сливочное и маргаринг1801192019-06-01 00:00:000Молочные вкусности
121Масло сливочное Вологодское из Вологды 82,5%, 180 гмасло сливочное и маргаринг1801882019-06-01 00:00:000Молочные вкусности
122Масло сливочное Крестьянское из Вологды 72,5%, 180 гмасло сливочное и маргаринг1801432019-06-01 00:00:000Молочные вкусности
125Масло сливочное Традиционное из Вологды 82,5%, 180 гмасло сливочное и маргаринг1802142019-06-01 00:00:000Молочные вкусности
126Масло сливочное традиционное Рузское молоко высший сорт 82,5 %, 175 гмасло сливочное и маргаринг1751822019-06-01 00:00:000Молочные вкусности
131Масло сливочное любительское соленое из Вологды 80%, 180 гмасло сливочное и маргаринг1802142019-06-01 00:00:000Молочные вкусности
133Масло сливочное Крестьянское Вологодское лето 72,5 %масло сливочное и маргарин%72.51192019-06-01 00:00:000Молочные вкусности
134Масло сливочное традиционное Вологодское лето 82,5 %, 180 гмасло сливочное и маргарингnan1162019-06-01 00:00:000Молочные вкусности
135Масло сливочное традиционное Вкуснотеево 82,5%, 200 гмасло сливочное и маргаринг2001522019-06-01 00:00:000Молочные вкусности
143Масло сливочное Бежин луг 72,5%, 180 гмасло сливочное и маргаринг1801142019-06-01 00:00:000Молочные вкусности
146Масло сливочное Тульское Тульский молочный комбинат 72,5 %, 400 гмасло сливочное и маргаринг4002122019-06-01 00:00:000Молочные вкусности
149Масло сливочное Традиционное Углече Поле органическое 82,5%, 200 гмасло сливочное и маргаринг2002732019-06-01 00:00:000Молочные вкусности
163Масло сливочное Простоквашино 82%, 400 гмасло сливочное и маргаринг4003162019-06-01 00:00:000Молочные вкусности
166Масло сливочное Вологодское удолье традиционное высший сорт 82,5%, 180 гмасло сливочное и маргаринг1801192019-06-01 00:00:000Молочные вкусности
167Масло сливочное Тульское крестьянское 72,5%, 180 гмасло сливочное и маргаринг1801122019-06-01 00:00:000Молочные вкусности
170Масло сливочное из Вологды шоколадное 62 %, 180 гмасло сливочное и маргаринг1801792019-06-01 00:00:000Молочные вкусности
186Масло сливочное Домик в деревне натуральное 82,5%, 180 гмасло сливочное и маргаринг1801362019-06-01 00:00:000Молочные вкусности
10Молоко ультрапастеризованное Простоквашино 2,5%, 950 млмолоко и сливкимл950822019-06-01 00:00:001Семёрочка
11Молоко ультрапастеризованное Домик в деревне 0,5%, 950 гмолоко и сливкиг9501152019-06-01 00:00:001Семёрочка
12Молоко ультрапастеризованное Вкуснотеево 2,5%, 200 гмолоко и сливкиг200252019-06-01 00:00:001Семёрочка
17Молоко пастеризованное Домик в деревне отборное 3,5-4,5%, 1,4 лмолоко и сливкил1.41442019-06-01 00:00:001Семёрочка
18Молоко пастеризованное Домик в деревне 2,5%, 1,4 лмолоко и сливкил1.41312019-06-01 00:00:001Семёрочка
29Молоко топленое пастеризованное Домик в деревне 3,2%, 925 млмолоко и сливкимл9251082019-06-01 00:00:001Семёрочка
34Молоко топленое Вологодское лето 4%, 930 млмолоко и сливкимл930742019-06-01 00:00:001Семёрочка
38Молоко пастеризованное Простоквашино отборное 3,4-4,5%, 930 млмолоко и сливкимл930892019-06-01 00:00:001Семёрочка
39Молоко пастеризованное Домик в деревне отборное 3,7-4,5%, 930 млмолоко и сливкимл930602019-06-01 00:00:001Семёрочка
42Молоко цельное пастеризованное Вологжанка отборное 3,4-4,0%, 1000 гмолоко и сливкиг1000802019-06-01 00:00:001Семёрочка
46Молоко топленое Бежин луг 3,2%, 925 гмолоко и сливкигnan632019-06-01 00:00:001Семёрочка
49Молоко пастеризованное Вологодское лето отборное 3,4-4,0%, 930 млмолоко и сливкимл930822019-06-01 00:00:001Семёрочка
58Молоко ультрапастеризованное Домик в деревне 1,5%, 950 гмолоко и сливкиг950792019-06-01 00:00:001Семёрочка
59Молоко ультрапастеризованное Домик в деревне 3,2%, 1,45 кгмолоко и сливкикг1.451462019-06-01 00:00:001Семёрочка
73Молоко ультрапастеризованное Домик в деревне 3,5%, 200 гмолоко и сливкиг200372019-06-01 00:00:001Семёрочка
74Молоко ультрапастеризованное Простоквашино 1,5%, 950 млмолоко и сливкимл9501002019-06-01 00:00:001Семёрочка
75Молоко пастеризованное Простоквашино 2,5%, 930 млмолоко и сливкимл930922019-06-01 00:00:001Семёрочка
76Молоко ультрапастеризованное Домик в деревне 3,2%, 950 гмолоко и сливкиг950872019-06-01 00:00:001Семёрочка
77Молоко ультрапастеризованное Вологодское 3,2%, 970 млмолоко и сливкимл970712019-06-01 00:00:001Семёрочка
78Молоко ультрапастеризованное Домик в деревне 3,5%, 950 гмолоко и сливкиг950952019-06-01 00:00:001Семёрочка
79Молоко ультрапастеризованное Домик в деревне 2,5%, 950 гмолоко и сливкигnan582019-06-01 00:00:001Семёрочка
80Молоко ультрапастеризованное Брест-Литовск 3,6%, 1 лмолоко и сливкил1992019-06-01 00:00:001Семёрочка
81Молоко пастеризованное Домик в деревне 2,5%, 930 млмолоко и сливкимл9301012019-06-01 00:00:001Семёрочка
82Молоко ультрапастеризованное Вкуснотеево 3,2%, 200 гмолоко и сливкиг200222019-06-01 00:00:001Семёрочка
83Молоко пастеризованное Вологжанка 2,5%, 500 гмолоко и сливкиг500412019-06-01 00:00:001Семёрочка
84Молоко ультрапастеризованное Домик в деревне 6%, 950 гмолоко и сливкиг9501252019-06-01 00:00:001Семёрочка
96Молоко пастеризованное Простоквашино 1,5%, 930 млмолоко и сливкимл930752019-06-01 00:00:001Семёрочка
98Молоко пастеризованное Вкуснотеево 3,8%, 900 гмолоко и сливкиг900752019-06-01 00:00:001Семёрочка
101Молоко пастеризованное Вологжанка 2,5%, 1000 гмолоко и сливкигnan712019-06-01 00:00:001Семёрочка
102Молоко пастеризованное Вологжанка 3,2%, 1 лмолоко и сливкил1702019-06-01 00:00:001Семёрочка
119Молоко Бежин луг пастеризованное 3,2%, 900 гмолоко и сливкиг900622019-06-01 00:00:001Семёрочка
120Масло сливочное Простоквашино 72,5%, 180 гмасло сливочное и маргаринг1801162019-06-01 00:00:001Семёрочка
121Масло сливочное Вологодское из Вологды 82,5%, 180 гмасло сливочное и маргаринг1801652019-06-01 00:00:001Семёрочка
122Масло сливочное Крестьянское из Вологды 72,5%, 180 гмасло сливочное и маргаринг1801392019-06-01 00:00:001Семёрочка
Код
Результат