You should first calculate age from date of birth
then find average of age
Select AVG(Datediff("yyyy",DateOfBirth,getdate())) as AVGage from Students
Select MIN(Datediff("yyyy",DateOfBirth,getdate())) as MINage from Students
you can also calucate avg,min in one query
Select AVG(Datediff("yyyy",DateOfBirth,getdate())) as AVGage ,
MIN(Datediff("yyyy",DateOfBirth,getdate())) as MINage
from Students
FOR MS ACCESS DB:
- Now() provides date and time
- Date() provides the date
- Time() provides the time
You can Use Date() Function
Select AVG(Datediff("yyyy",DateOfBirth,DATE())) as AVGage ,
MIN(Datediff("yyyy",DateOfBirth,DATE())) as MINage
from Students
Here is SQLFIDDLE FOR SQLSERVER:
Всем привет, у меня есть практическое задание на курсах, но я не понимаю как его выполнить.
1)Подсчитайте средний возраст пользователей в таблице users.
2)Подсчитайте количество дней рождения, которые приходятся на каждый
из дней недели. Следует учесть, что необходимы дни недели текущего
года, а не года рождения.
Вот данные таблицы, чтобы было проще:
Мне говорили что-то про виртуальные таблицы, но до меня не дошло.
Так же знаю что можно datetime((to_days(now()) - to_days(birthday)) / 365.25)
— чтобы узнать сколько лет персоне, но дальше этого не идет(( Помогите пожалуйста, как можно было понять, это MySQL.
Вот с подсказкой в комментарии, все еще не понимаю как?
Первое сделано так:
serjik85 0 / 0 / 0 Регистрация: 22.01.2016 Сообщений: 8 |
||||
1 |
||||
Запрос: вычислить средний возраст22.01.2016, 02:00. Показов 36349. Ответов 13 Метки нет (Все метки)
Всем привет!
0 |
YakobsEA 268 / 96 / 75 Регистрация: 04.12.2015 Сообщений: 369 Записей в блоге: 1 |
||||||||
22.01.2016, 07:20 |
2 |
|||||||
Ваш исходный запрос почти верный, я только знак поменял
Запрос для определения среднего возраста:
Проверял на 2008 сервере.
1 |
0 / 0 / 0 Регистрация: 22.01.2016 Сообщений: 8 |
|
22.01.2016, 08:59 [ТС] |
3 |
Спасибо огромное! А можно ли еще сделать, что бы выводило возраст сотрудников?
0 |
268 / 96 / 75 Регистрация: 04.12.2015 Сообщений: 369 Записей в блоге: 1 |
|
22.01.2016, 09:07 |
4 |
Так уже выводится (через * в первом запросе). «SELECT * FROM …» — это вывести всё из … (в т.ч. значения поля BirthDate, содержащего дату рождения)
0 |
0 / 0 / 0 Регистрация: 22.01.2016 Сообщений: 8 |
|
22.01.2016, 09:12 [ТС] |
5 |
Точно, все есть. Не заметил, сори. Еще раз спасибо
0 |
serjik85 0 / 0 / 0 Регистрация: 22.01.2016 Сообщений: 8 |
||||
23.01.2016, 20:02 [ТС] |
6 |
|||
Еще вопросик, есть база, в одной таблице имена и фамилии, в другой заказы, я их объеденил с помощью JOIN как теперь посчтитать кол-во заказов каждого человека в 1997 году? Не понимаю как использовать COUNT. Заранее спасибо!
0 |
YakobsEA 268 / 96 / 75 Регистрация: 04.12.2015 Сообщений: 369 Записей в блоге: 1 |
||||
23.01.2016, 20:46 |
7 |
|||
Не проверял запрос, но вроде должен работать.
Только у Вас таблицы не правильно объединены. Условие, которое сейчас участвует в объединении нужно поместить в WHERE, а объединять по идентификаторам клиентов (тех, что делают заказы).
0 |
0 / 0 / 0 Регистрация: 22.01.2016 Сообщений: 8 |
|
23.01.2016, 20:51 [ТС] |
8 |
Ошибку выбивает А как правильно объединить подскажите пожалуйста. Целый день с этим JOINом мучаюсь
0 |
YakobsEA 268 / 96 / 75 Регистрация: 04.12.2015 Сообщений: 369 Записей в блоге: 1 |
||||
23.01.2016, 21:06 |
9 |
|||
РешениеСтранно, у меня подобный запрос работает. Замените «COUNT(dbo.Employees.LastName) AS Cnt1» на «COUNT(*) AS Cnt1» Что касается JOIN:
Поле EmployeeID — идентификатор клиента (как это поле в ваших таблицах называется я к сожалению не знаю). Также оно может называться по своему в каждой из таблиц.
1 |
0 / 0 / 0 Регистрация: 22.01.2016 Сообщений: 8 |
|
23.01.2016, 21:15 [ТС] |
10 |
Спасибо, заработало, а чем отличается LEFT JOIN от RIGHT JOIN?
0 |
YakobsEA 268 / 96 / 75 Регистрация: 04.12.2015 Сообщений: 369 Записей в блоге: 1 |
||||||||
24.01.2016, 05:43 |
11 |
|||||||
Это почти одно и тоже.
вернёт тот же набор записей, что и
1 |
0 / 0 / 0 Регистрация: 22.01.2016 Сообщений: 8 |
|
24.01.2016, 15:05 [ТС] |
12 |
Спасибо большое, разобрался
0 |
iap 1109 / 754 / 182 Регистрация: 27.11.2009 Сообщений: 2,249 |
||||||||
24.01.2016, 15:56 |
13 |
|||||||
Ну и ну! Самое главное — нигде не показано правильного вычисления возраста человека.
0 |
YakobsEA 268 / 96 / 75 Регистрация: 04.12.2015 Сообщений: 369 Записей в блоге: 1 |
||||
24.01.2016, 20:04 |
14 |
|||
Да, представленный запрос оптимальнее. Я как-то об оптимизации не задумывался, каюсь.
0 |
Поиск
минимального и максимального значений
В
MySQL имеются встроенные функции для
вычисления минимального и максимального
значений.
SQL
имеет 5 агрегатных функций.
MIN():
минимальное значение
MAX():
максимальное значение
SUM():
сумма значений
AVG():
среднее значений
COUNT():
подсчитывает число записей
В
этом параграфе мы рассмотрим поиск
минимального и максимального значений
столбца.
Минимальное
значение
select
MIN(salary) from employee_data;
На
рисунке приведен результат запроса.
Рисунок
1.2.7.1 – Поиск минимальной зарплаты
Максимальное
значение
select
MAX(salary) from employee_data;
На
рисунке приведен результат запроса.
Рисунок
1.2.7.2 – Поиск максимальной зарплат
Поиск
среднего значения и суммы
Суммирование
значений столбца с помощью функции SUM
Агрегатная
функция SUM()
вычисляет
общую сумму
значений в столбце. Для этого необходимо
задать имя столбца, которое должно быть
помещено внутри скобок.
Давайте
посмотрим, сколько компания BigFoot тратит
на зарплату своих сотрудников.
select
SUM(salary) from employee_data;
На
рисунке приведен результат запроса.
Рисунок
1.2.7.2 – Сумма всех зарплат
Аналогично
можно вывести общую сумму надбавок,
выдаваемых сотрудникам.
select
SUM(perks) from employee_data;
На
рисунке приведен результат запроса.
Рисунок
1.2.7.3 – Сумма всех надбавок
Можно
найти также общую сумму зарплаты и
надбавок.
select
sum(salary) + sum(perks) from employee_data;
На
рисунке приведен результат запроса.
Рисунок
1.2.7.4 – Общая сумма зарплаты и надбавок
Здесь
показаны также дополнительные возможности
команды SELECT. Значения можно складывать,
вычитать, умножать или делить. В
действительности можно записывать
полноценные арифметические выражения.
Вычисление
среднего значения
Агрегатная
функция AVG()
используется для вычисления среднего
значения данных в столбце.
select
avg(age) from employee_data;
На
рисунке приведен результат запроса.
Рисунок
1.2.7.5 – Средний возраст сотрудников
Пример
выше вычисляет средний возраст сотрудников
компании BigFoot, а следующий выводит
среднюю зарплату.
select
avg(salary) from employee_data;
На
рисунке приведен результат запроса.
Рисунок
1.2.7.6 – Средняя зарплата сотрудников
Именование
столбцов
MySQL
позволяет задавать имена для выводимых
столбцов. Поэтому вместо f_name
или l_name
и т.д. можно использовать более понятные
и наглядные термины. Это делается с
помощью оператора AS.
select
avg(salary) AS
‘Средняя
зарплата’ from
employee_data;
На
рисунке приведен результат запроса.
Рисунок
1.2.7.7 – Вывод средней зарплаты с
использованием псевдо-имен столбцов.
Такие
псевдо-имена могут сделать вывод более
понятным для пользователей. Важно только
помнить, что при задании псевдо-имен с
пробелами необходимо заключать такие
имена в кавычки. Вот еще один пример:
select
(SUM(perks)/SUM(salary) * 100)
AS
‘Процент надбавок’ from
employee_data;
На
рисунке приведен результат запроса.
Рисунок
1.2.7.8 – Вывод процента зарплаты,
которую сотрудники получают в качестве
надбавок с использованием псевдо-имен
Подсчет
числа записей
Агрегатная
функция COUNT()
подсчитывает и выводит общее число
записей. Например, чтобы подсчитать
общее число записей в таблице, выполните
следующую команду.
select
COUNT(*) from employee_data;
На
рисунке приведен результат запроса.
Рисунок
1.2.7.9 – Общее количество записей
Как
мы уже знаем, знак * означает «все
данные».
Теперь
давайте подсчитаем общее число
сотрудников, которые занимают должность
«программист».
select
COUNT(*) from employee_data
where
title = ‘программист’;
На
рисунке приведен результат запроса.
Рисунок
1.2.7.10 – Общее количество
сотрудников-программистов
Группировка
данных
Предложение
GROUP BY
позволяет группировать аналогичные
данные. Поэтому, чтобы вывести все
уникальные должности в таблице, можно
выполнить команду
select
title from employee_data
GROUP
BY title;
На
рисунке приведен результат запроса.
Рисунок
1.2.7.11 – Все уникальные должности
сотрудников
Вот
как можно подсчитать число сотрудников
имеющих определенную должность.
select
title, count(*)
from
employee_data GROUP BY title;
На
рисунке приведен результат запроса.
Рисунок
1.2.7.12 – Количество сотрудников по
должностям
В
предыдущей команде MySQL сначала создает
группы различных должностей, а затем
выполняет подсчет в каждой группе.
Сортировка
данных
Теперь
давайте найдем и выведем число сотрудников,
имеющих различные должности, и отсортируем
их с помощью ORDER
BY.
select
title, count(*) AS Number
from
employee_data
GROUP
BY title
ORDER
BY
Number;
На
рисунке приведен результат запроса.
Рисунок
1.2.7.13 – Количество сотрудников по
должностям с сортировкой
SQL или язык структурированных запросов — это язык программирования, используемый для связи с базами данных. Это позволяет пользователям извлекать, манипулировать и управлять данными, хранящимися в системах управления реляционными базами данных (RDBMS). SQL — это мощный инструмент для анализа данных, поскольку он позволяет пользователям быстро и легко получать доступ к большим объемам данных, хранящихся в базе данных, и манипулировать ими. В этой статье мы рассмотрим основы использования SQL для анализа данных.
SQL или язык структурированных запросов — это язык программирования, используемый для управления данными, хранящимися в реляционных базах данных, и манипулирования ими. Это мощный инструмент для анализа данных, поскольку он позволяет пользователям легко извлекать и обрабатывать большие объемы данных организованным и эффективным образом.
Чтобы использовать SQL для анализа данных, выполните следующие действия:
- Подключение к базе данных: чтобы использовать SQL, вам необходимо подключиться к базе данных. Это можно сделать с помощью программного инструмента, такого как SQL Server Workbench, или через интерфейс командной строки.
- Напишите оператор SELECT: Оператор SELECT используется для извлечения данных из базы данных. Вы можете указать, какие столбцы вы хотите извлечь, а также любые условия, которые должны быть выполнены. Например, вы могли бы написать оператор SELECT, подобный:
SELECT * FROM sales WHERE date >= '2022-01-01';
Это позволит получить все строки из таблицы продаж, где столбец даты больше или равен 1 января 2022 года.
- Используйте агрегатные функции: Агрегатные функции позволяют выполнять вычисления с несколькими строками данных. Например, вы можете использовать функцию SUM для вычисления общей суммы всех продаж за данный период времени или функцию AVG для вычисления средней цены продажи.
- Используйте предложения GROUP BY и HAVING: предложение GROUP BY позволяет группировать строки данных на основе общих значений в столбце. Предложение HAVING позволяет указать условия, которым должны соответствовать группы. Например, вы можете использовать следующий оператор, чтобы сгруппировать продажи по продуктам и показать только те, общая сумма которых превышает 100 долларов США:
SELECT product, SUM(sales) FROM sales GROUP BY product HAVING SUM(sales) > 100;
- Используйте предложения JOIN: предложение JOIN позволяет вам объединять данные из нескольких таблиц в одном запросе. Это может быть полезно для анализа данных, разбросанных по нескольким таблицам, или для объединения данных из разных источников.
- Сохраняйте результаты и делитесь ими. После того, как вы получили данные и обработали их, вы можете сохранить результаты в новой таблице или экспортировать их в файл. Затем вы можете поделиться своими результатами с другими, отправив им файл или предоставив им доступ к таблице в базе данных.
Следуя этим шагам, вы сможете использовать SQL для эффективного и действенного анализа больших объемов данных, хранящихся в базе данных.
Подключение к базе данных
Первым шагом в использовании SQL для анализа данных является установление соединения с базой данных. Это можно сделать с помощью инструмента управления базой данных, такого как MySQL Workbench, или с помощью языка программирования, поддерживающего запросы SQL, например Python или R.
Чтобы подключиться к базе данных с помощью MySQL Workbench, вам потребуется ввести данные подключения к базе данных, включая имя хоста, порт, имя пользователя и пароль. После того, как вы введете эти данные и нажмете кнопку «Connect», вы будете подключены к своей базе данных и сможете начать выполнять команды SQL.
Выбор данных
После подключения к базе данных вы можете использовать оператор SELECT для извлечения данных из базы данных. Оператор SELECT используется для указания столбцов данных, которые вы хотите получить, а также любых условий, которым должны соответствовать данные.
Например, чтобы получить все строки и столбцы из таблицы «customers», вы можете использовать следующую инструкцию SELECT:
Вы также можете использовать предложение WHERE, чтобы указать условия, которым должны соответствовать данные. Например, чтобы получить только строки, в которых столбец «city» — «New York», вы можете использовать следующую инструкцию SELECT:
SELECT * FROM customers WHERE city = 'New York';
Фильтрация и сортировка данных
После извлечения данных вы можете использовать различные предложения и функции для фильтрации и сортировки данных. Например, вы можете использовать предложение WHERE для фильтрации данных на основе определенных условий, а предложение ORDER BY — для сортировки данных в порядке возрастания или убывания.
Например, чтобы получить только строки, где столбец «age» больше 30, и отсортировать результаты по столбцу «name» в порядке возрастания, вы можете использовать следующую инструкцию SELECT:
SELECT * FROM customers WHERE age > 30 ORDER BY name ASC;
Выполнение расчетов
SQL позволяет выполнять различные вычисления с данными, например суммировать значения в столбце или находить среднее значение набора значений. Вы можете использовать функцию SUM для суммирования значений в столбце и функцию AVG для нахождения среднего значения набора значений.
Например, чтобы найти общую сумму продаж для всех клиентов, вы можете использовать следующую инструкцию SELECT:
SELECT SUM(sales) FROM customers;
Чтобы найти средний возраст всех клиентов, вы можете использовать следующий оператор SELECT:
SELECT AVG(age) FROM customers;
Групповые и сводные данные
SQL также позволяет вам группировать данные и поворачивать их, чтобы вы могли видеть их по-разному. Предложение GROUP BY позволяет группировать данные по определенному столбцу, а функция PIVOT позволяет преобразовывать данные из строк в столбцы.
Он обычно используется при анализе данных, поскольку позволяет пользователям легко извлекать, обрабатывать и анализировать данные из базы данных.
Мы предоставим краткий обзор того, как использовать SQL для анализа данных.
- Подключение к базе данных. Первым шагом в использовании SQL для анализа данных является подключение к базе данных. Обычно это можно сделать с помощью инструмента управления базой данных, такого как MySQL Workbench или Microsoft SQL Server Management Studio.
- Напишите оператор SELECT: как только вы подключитесь к базе данных, вы можете начать извлечение данных с помощью оператора SELECT. Оператор SELECT используется для извлечения данных из таблицы базы данных и имеет следующий синтаксис:
SELECT column_1, column_2, ...
FROM table_name
WHERE condition;
Например, чтобы получить все данные из таблицы с названием «sales», вы можете использовать следующую инструкцию SELECT:
- Используйте фильтры и условия. Предложение WHERE оператора SELECT позволяет указать условия для фильтрации извлекаемых данных. Например, вы можете использовать предложение WHERE только для получения данных за определенный период времени или данных, соответствующих определенным критериям.
- Агрегируйте данные с помощью GROUP BY и HAVING. Предложение GROUP BY позволяет группировать данные по одному или нескольким столбцам, а предложение HAVING позволяет указать условия для групп. Это может быть полезно для агрегирования данных и расчета сводной статистики, такой как подсчеты, суммы и средние значения.
- Используйте JOIN для объединения данных из нескольких таблиц. Предложение JOIN позволяет вам объединять данные из нескольких таблиц в одном операторе SELECT. Это может быть полезно для извлечения данных, разбросанных по нескольким таблицам, и объединения их в единый набор данных для анализа.
- Используйте подзапросы для извлечения данных на основе результатов другого запроса: Подзапрос — это оператор SELECT, вложенный в другой оператор SELECT. Его можно использовать для извлечения данных на основе результатов внешнего запроса.
- Используйте общие функции и операторы: SQL включает в себя широкий спектр функций и операторов, которые можно использовать для управления данными и выполнения вычислений. Некоторые общие функции и операторы включают SUM, AVG, MAX, MIN, COUNT и CASE.
Следуя этим шагам и используя различные предложения, функции и операторы, доступные в SQL, вы сможете эффективно использовать SQL для анализа данных. Кроме того, SQL можно использовать в маркетинговой аналитике для определения ценности сегментов. Это мощный и универсальный инструмент, который можно использовать для извлечения, обработки и анализа данных из базы данных.