Форум программистов, компьютерный форум, киберфорум
PostgreSQL
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.72/18: Рейтинг темы: голосов - 18, средняя оценка - 4.72
0 / 0 / 0
Регистрация: 18.12.2020
Сообщений: 13

Select из одной таблицы одного столбца по нескольким условиям + count()

18.12.2020, 17:28. Показов 3978. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день.
Есть 2 таблицы (1. stend_monitoring 2.stand_status) в PSQL, примерно такого содержания:
num_stend stamp_name_event
1205 2020-12-16 10:05:08Контейнер установлен
2205 2020-11-15 12:04:08Контейнер изъят
1205 2020-10-14 13:07:08Книга используется
2205 2020-12-16 10:05:08Контейнер установлен
1205 2020-11-15 12:04:08Контейнер изъят
2205 2020-10-14 13:07:08Книга используется
1205 2020-12-16 10:05:08Контейнер установлен
2205 2020-11-15 12:04:08Контейнер изъят
1205 2020-10-14 13:07:08Книга используется
2205 2020-12-16 10:05:08Контейнер установлен
1205 2020-11-15 12:04:08Контейнер изъят
2205 2020-10-14 13:07:08Книга используется
1205 2020-12-16 10:05:08Контейнер установлен
2205 2020-11-15 12:04:08Контейнер изъят
1205 2020-10-14 13:07:08Книга используется
2205 2020-12-16 10:05:08Контейнер установлен
1205 2020-11-15 12:04:08Контейнер изъят
2205 2020-10-14 13:07:08Книга используется

num_stend object_name_status
12051книга у читателя
22051книга на складе


Необходим следующий select :
1) показать num_stend
2) по num_stend показать последнюю дату когда был "Контейнер изъят".
3) по num_stend показать последнюю дату когда был "Контейнер установлен".
4) по num_stend показать последнюю дату "Книга используется"
5) из второй таблицы (stand_status) нужен просто текущий name_status. (в таблице name_status постоянно обновляется, нужно просто забирать этот status)
6) Посчитать общее кол-во строк "Книга используется" после последнего события "Контейнер установлен"

В принципе почти всех хотел удалось победить
MySQL
1
2
3
4
5
select * from
(Select MAX(num_stend) AS номер_стенда, MAX(stamp_) AS Контейнер изъят from azt.stend_monitoring where name_event = 'Контейнер изъят' and num_stend = '1205') T2,
(Select MAX(stamp_) AS Контейнер установлен from azt.stend_monitoring where name_event = 'Контейнер установлен' and num_stend = '1205') T3,
(Select MAX(stamp_) AS Последняя_транзакция from azt.stend_monitoring where name_event = 'Книга используется' and num_stend = '1205') T4,
(Select name_status AS Состояние_стенда from azt.stand_status where object_ = 1 and num_stend = '1205') T5
1) Не могу только сообразить как сюда добавить общее кол-во строк "Книга используется" после последнего события "Контейнер установлен".
2) как уменьшить необходимость вводить num_stend.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
18.12.2020, 17:28
Ответы с готовыми решениями:

Вывод результатов из одной таблицы и одного столбца в два разных столбца
Ребят помогите, измучалась совсем, не знаю как решить. Есть таблица Таблица t2 Id Pid Pr Text 1 1 0 'sub text1 1' ...

Select по нескольким условиям
Уважаемые форумчане) Помогите разобраться с костылями! у меня есть решение но я считаю его сложным и долгим! Давайтепо порядку есть...

Select из одной таблицы в два столбца
Есть табличка организации "ORG" и главная таблица перевозки "FREIGHT" В таблице FREIGHT, есть столбцы CLIENT и CARRIER значения которых...

5
1264 / 978 / 384
Регистрация: 02.09.2012
Сообщений: 3,021
19.12.2020, 07:01
Лучший ответ Сообщение было отмечено armsinglom как решение

Решение

скорее всего задание предполагало: чтобы сделать 2), надо все шиворот-навыворот
и скорее всего предполагается в пункет 6, что надо посчитать кол-во строк в рамках того же num_stend, нет??

вот наверно как-то так, но это без проверки, возможны ошибки


SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
SELECT 
q1.*,
(SELECT COUNT(*) FILTER (WHERE name_event='Книга используется')
  FROM azt.stend_monitoring AS m2 WHERE m2.num_stend=q1.num_stend AND
             m2.stamp_ > q1."Контейнер_установлен") AS "Пункт_6"
FROM
(SELECT
m.num_stend,
MAX(stamp_) FILTER (WHERE name_event = 'Контейнер изъят') AS "Контейнер_изъят",
MAX(stamp_) FILTER (WHERE name_event = 'Контейнер установлен') AS "Контейнер_установлен",
MAX(stamp_) FILTER (WHERE name_event = 'Книга используется') AS "Книга_используется",
s.name_status
FROM
azt.stend_monitoring AS m LEFT JOIN azt.stand_status AS s USING (num_stend)
WHERE
m.num_stend='1205'
GROUP BY
m.num_stend) AS q1
1
0 / 0 / 0
Регистрация: 18.12.2020
Сообщений: 13
19.12.2020, 15:21  [ТС]
Выдает ошибку:
Code
1
2
column reference "name_event" is ambiguous
LINE 9: MAX(stamp_)  и т.д...
И не увидел дополнительную проверку azt.stand_status по object_ = 1, это важно так там есть другие статусы...

P/S В остальном да, поняли вы меня верно.
0
0 / 0 / 0
Регистрация: 18.12.2020
Сообщений: 13
19.12.2020, 23:52  [ТС]
Вероятно это вызвано тем, что я вас ввел в заблуждение... во второй таблице столбец называется не name_status а так же как и в первой name_event
0
1264 / 978 / 384
Регистрация: 02.09.2012
Сообщений: 3,021
20.12.2020, 20:24
Цитата Сообщение от armsinglom Посмотреть сообщение
Выдает ошибку:
Поставьте явный алиас "m." перед name_event. Я ориентировался на приведенное описание таблиц.
Цитата Сообщение от armsinglom Посмотреть сообщение
не увидел дополнительную проверку azt.stand_status по object_ = 1,
Ну по заданию как-то это не видно, но тогда поставьте под WHERE это условие.
1
0 / 0 / 0
Регистрация: 18.12.2020
Сообщений: 13
21.12.2020, 00:52  [ТС]
Да всё супер, работает как нужно. Спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
21.12.2020, 00:52
Помогаю со студенческими работами здесь

Выбор данных для двух столбцов по двум разным условиям из одного столбца другой таблицы
Здравствуйте! Возникла такая задачка Есть 2 таблицы Resp_id (столбцы Id, FIO и тд) Soc_resp_answ (столбцы Resp_ID, Col_ID,...

Разделение столбца по нескольким условиям (в виде макроса)
Есть скопированный в один столбец текст, в котором указаны вид оплаты и название товара. Видов оплаты пять: Visa (акция) Visa и...

Вставка всех записей одного столбца из одной таблицы в другую
Есть 2 таблицы Таблица 1. Поле ID. Поле значение. Таблица 2. Поле_1 Поле_2

Вывод нескольких реузьтатов по нескольким условиям в одной выборке
Здравствуйте. Есть в бд на аксесс 2 таблицы: 1)НазначенияСотрудникам(Код-счетчик, ключевое;Сотрудник-целое число;Объект -...

Выборка из таблицы по нескольким условиям MS Excel
Уважаемые эксперты, подскажите пожалуйста как сделать в данном случае. Есть 4 критерия - 4 столбца данных, я их вырезал отдельно из...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru