powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Подскажите где ошибся
15 сообщений из 15, страница 1 из 1
Подскажите где ошибся
    #39795312
Lugner32
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет! Есть пара задачек..Нужна помощь в исправлении ошибок решения.


В таблице bus_logs хранятся данные о прибытии автобусов на остановки.
В поле diff содержится разница в секундах относительно контрольного времени прибытия.
Положительные значения говорят о том, что автобус прибыл рано, отрицательные, о том, что он опоздал, 0 – приехал вовремя.
Получите список водителей, которые в среднем опаздывают или опережают график на 30 секунд и более.

Итоговая таблица должна состоять из двух колонок: driver_id с номером водителя и avg_diff со средним отклонением. Среднее отклонение следует округлить до целого числа.

bus_logs
id driver_id time diff
1 1 2018-06-14 12:00:44 0
2 2 2018-06-14 12:01:50 33
3 3 2018-06-14 12:04:20 -60
4 4 2018-06-14 12:06:28 5
5 1 2018-06-14 12:08:56 -10
6 2 2018-06-14 12:10:01 -1
7 3 2018-06-14 12:10:01 27
8 4 2018-06-14 12:10:01 30
9 1 2018-06-14 12:10:01 22
10 2 2018-06-14 12:10:01 64
11 3 2018-06-14 12:10:01 -18
12 4 2018-06-14 12:10:01 12
13 1 2018-06-14 12:10:01 -40
14 2 2018-06-14 12:10:01 -40
15 3 2018-06-14 12:10:01 18
16 4 2018-06-14 12:10:01 10
17 1 2018-06-14 12:10:01 12
18 2 2018-06-14 12:10:01 34
19 3 2018-06-14 12:10:01 -42
20 4 2018-06-14 12:10:01 8
21 1 2018-06-14 12:10:01 5
22 2 2018-06-14 12:10:01 27
23 3 2018-06-14 12:10:01 21
24 4 2018-06-14 12:10:01 -4

Решал так:
SELECT driver_id, CEILING(AVG(diff)) as avg_diff FROM bus_logs
WHERE diff >= 30 GROUP BY driver_id HAVING avg_diff >= 30

Ошибка:Wrong records selected

Query result:
+-----------+----------+
| driver_id | avg_diff |
+-----------+----------+
| 2 | 44 |
| 4 | 30 |
+-----------+----------+
Affected rows: 2
...
Рейтинг: 0 / 0
Подскажите где ошибся
    #39795314
Lugner32
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот вторая:
В таблице products содержатся данные о товарах с привязками к категориям (category_id).
Получите id категорий и количество товаров на складе для каждой из категорий.
Выведите только категории в которых есть товары.
Данные отсортируйте по количеству товаров.

В итоговой таблице должно быть два столбца: category_id и products.

products
id name count price category_id
1 Сникерс большой 3 56 1
2 Сливочное масло Милка 2 104.4 2
3 Яблоки ред 7 98 3
4 Яблоки голден 3 89 3
5 Марс 7 36.5 1
6 Сметана 20 2 49 2
7 Сметана 15 4 45 2
8 Сметана 20 фермерская 1 78.9 2
9 Апельсины 5 70 3
10 Макароны 1 кг 4 56 4
11 Вода 1 л 12 18 5
12 Гречка 0,5 кг 4 45 4
13 Хлеб былый 7 23.4 8
14 Творог 9 3 56 2
15 Шампунь H&S 0 238 7
16 Баунти 0 38.9 1
17 Батон купеческий 5 34.5 8
18 Говядина 1 308 17
19 Помидоры 8 46 3
20 Индейка 2 534 17
21 Свинина 0 349 17
22 Тарелки 12 шт 0 780 6
23 Кружки 6 шт 0 230 6

Решал так:
SELECT category_id, COUNT(count) as products FROM products WHERE count>0 GROUP BY category_id HAVING products>0 ORDER BY products

Ошибка:
Wrong records selected

Query result:
+-------------+----------+
| category_id | products |
+-------------+----------+
| 5 | 1 |
| 1 | 2 |
| 4 | 2 |
| 8 | 2 |
| 17 | 2 |
| 3 | 4 |
| 2 | 5 |
+-------------+----------+
Affected rows: 7
...
Рейтинг: 0 / 0
Подскажите где ошибся
    #39795321
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lugner32список водителей, которые в среднем опаздывают или опережают график на 30 секунд и более.
С к такой задаче условия diff >= 30 и avg_diff >= 30 выборки не годятся
...
Рейтинг: 0 / 0
Подскажите где ошибся
    #39795339
Lugner32
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vkle, Спасибо за подсказку)))
SELECT driver_id, ROUND(AVG(ABS(diff)),0) as avg_diff FROM bus_logs
GROUP BY driver_id HAVING avg_diff >= 30 AND avg_diff >= -30

Такое решение помогло)))
...
Рейтинг: 0 / 0
Подскажите где ошибся
    #39795344
Lugner32
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lugner32Вот вторая:
В таблице products содержатся данные о товарах с привязками к категориям (category_id).
Получите id категорий и количество товаров на складе для каждой из категорий.
Выведите только категории в которых есть товары.
Данные отсортируйте по количеству товаров.

В итоговой таблице должно быть два столбца: category_id и products.

products
id name count price category_id
1 Сникерс большой 3 56 1
2 Сливочное масло Милка 2 104.4 2
3 Яблоки ред 7 98 3
4 Яблоки голден 3 89 3
5 Марс 7 36.5 1
6 Сметана 20 2 49 2
7 Сметана 15 4 45 2
8 Сметана 20 фермерская 1 78.9 2
9 Апельсины 5 70 3
10 Макароны 1 кг 4 56 4
11 Вода 1 л 12 18 5
12 Гречка 0,5 кг 4 45 4
13 Хлеб былый 7 23.4 8
14 Творог 9 3 56 2
15 Шампунь H&S 0 238 7
16 Баунти 0 38.9 1
17 Батон купеческий 5 34.5 8
18 Говядина 1 308 17
19 Помидоры 8 46 3
20 Индейка 2 534 17
21 Свинина 0 349 17
22 Тарелки 12 шт 0 780 6
23 Кружки 6 шт 0 230 6

Решал так:
SELECT category_id, COUNT(count) as products FROM products WHERE count>0 GROUP BY category_id HAVING products>0 ORDER BY products

Ошибка:
Wrong records selected

Query result:
+-------------+----------+
| category_id | products |
+-------------+----------+
| 5 | 1 |
| 1 | 2 |
| 4 | 2 |
| 8 | 2 |
| 17 | 2 |
| 3 | 4 |
| 2 | 5 |
+-------------+----------+
Affected rows: 7



Такое решение помогло )))
SELECT category_id, SUM(count) as products FROM products WHERE count>0 GROUP BY category_id HAVING products>0 ORDER BY products
...
Рейтинг: 0 / 0
Подскажите где ошибся
    #39795379
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lugner32avg_diff >= 30 AND avg_diff >= -30
Эквивалентно avg_diff >= 30
...
Рейтинг: 0 / 0
Подскажите где ошибся
    #39795382
Lugner32
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vkle,
Т.е зря удлинял запрос? Однако помогло же и ответ был засчитан)))
...
Рейтинг: 0 / 0
Подскажите где ошибся
    #39795415
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lugner32,

Графоманство это. Добавьте ещё пять или двадцать аналогичных бестолковых условий - результат не изменится.
...
Рейтинг: 0 / 0
Подскажите где ошибся
    #39795433
Lugner32
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vkle, я понял Вас)) спасибо за помощь и наставления))
Я не волшебник, я только учусь©«Золушка»:-)

Впредь учту и буду знать)))Собственно зайтись я и обратился.
...
Рейтинг: 0 / 0
Подскажите где ошибся
    #39795482
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lugner32Однако помогло же и ответ был засчитан)))Преподаватель - безграмотен? запрос-то заведомо неверный, и вообще не соответствует тексту задания.
Lugner32Такое решение помогло )))И тоже - ответ неверный, ибо не соответствует условию задания.
...
Рейтинг: 0 / 0
Подскажите где ошибся
    #39795493
Lugner32
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina,Об этом я не могу судить. Так как не профессионален в этом. В его профиле написано что стаж работы более 10 лет и он участник различных олимпиад и основатель собственного учебного онлайн сервиса. ( что то типа того)))
...
Рейтинг: 0 / 0
Подскажите где ошибся
    #39795494
Lugner32
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Помогите плиз с ещё одной задачкой)) тут что то я вообще подвис. По теме «объединение с помощью UNION))
После слияния двух компаний, IT отделу поручили объединение баз данных. Слейте users и members в единую таблицу со следующими столбцами:

id — идентификатор пользователя. Так как идентификаторы пользователей в таблицах одинаковые, то примените к ним следующую формулу id * 10 + N, где N – равен одному для таблицы users и двум для members.
first_name — имя пользователя. Используйте оригинальное значение из таблицы users и извлеките имя из поля name таблицы members.
last_name — фамилия пользователя. Используйте оригинальное значение из таблицы users и извлеките фамилию из поля name таблицы members.
age — возраст пользователя. Используйте оригинальное значение из таблицы users и NULL для данных из members.
birthday — день рождения пользователя. Используйте оригинальное значение из таблицы members и NULL для данных из users.
sex — пол пользователя.
users
id first_name last_name age sex
1 Дмитрий Федьков 18 m
2 Светлана Иванова 30 w
3 Никита Трутнев 17 m
members
id name birthday sex
1 Денис Кац 1991-04-04 m
2 Алена Сорокина 1998-11-23 w
3 Василий Федьков 2000-10-08 m

Как грамотно написать запрос?
...
Рейтинг: 0 / 0
Подскажите где ошибся
    #39795536
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
SELECT id*10+1 id, 
       first_name, 
       last_name, 
       CONCAT(first_name, ' ', last_name) name, 
       age, 
       NULL birthday, 
       sex
FROM users
UNION ALL
SELECT id*10+2 id, 
       LEFT(name, LOCATE(name, ' ')-1), 
       SUBSTRING(name, LOCATE(name, ' ')+1), 
       name, 
       NULL, 
       birthday, 
       sex
FROM users
...
Рейтинг: 0 / 0
Подскажите где ошибся
    #39795539
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В принципе поле name по заданию не требуется, и его вроде бы можно и выкинуть. Но это формально приведёт к утрате данных, что есть сакс голимый.
...
Рейтинг: 0 / 0
Подскажите где ошибся
    #39795540
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И во втором подзапросе я забыл поправить имя таблицы - авось справишься.

Lugner32В его профиле написано что стаж работы более 10 лет и он участник различных олимпиад и основатель собственного учебного онлайн сервиса.Это ни о чём не говорит. А вот принятие неверного ответа как правильного...
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Подскажите где ошибся
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]