SQL-задача про UNION
Всем привет! Ещё один интересный вопрос с нашего Телеграм-канала про SQL и базы данных. Спасибо, что делитесь вопросами с собеседований!
Всем привет! Ещё один интересный вопрос с нашего Телеграм-канала про SQL и базы данных. Спасибо, что делитесь вопросами с собеседований!
У бесплатного облака oracle есть минус, это то что его могут в любой момент отключить из-за простоя. Чтобы избежать этого нужно сделать по инструкции, и установить стресс текст для загрузки своего сервера. Она взята с techtutelage.net:
apt update
apt install supervisor stress-ng
далее создаем для него файл
nano /etc/supervisor/conf.d/stress.conf
Далее пример 2х программ в стресс тесте.
в него прописываем : --- не учитываем
--------------------------------------------
[program:cpu_stress]
command=/usr/bin/stress-ng --cpu 1 --cpu-load 15
directory=/usr/bin/
user=root
autostart=true
autorestart=true
redirect_stderr=true
stdout_logfile=/var/log/stress.log
[program:memory_stress]
command=/usr/bin/stress-ng --vm 1 --vm-bytes 15%% --vm-hang 0
directory=/usr/bin/
user=root
autostart=true
autorestart=true
redirect_stderr=true
stdout_logfile=/var/log/stress.log
-------------------------------------------
- cpu 1 означает нагрузку на одно ядро, если у вас больше то стоит поставить другое число.
Достаточно выбрать что-то одно из двух, процессор либо память. Если нужно что -то отключить то в autostart= пишем false.
У меня на сервере лежал 3xui, я оставил загрузку процессора, загрузку памяти поставил
false.
Далее делаем -
supervisorctl reread
supervisorctl reload
Чтоб увидеть статус запущенного -
supervisorctl status
Если на сервере есть что-то и оно грузит его, то возможно отключение какого-то из 2х тестов.
Предлагаю ещё одну задачу по базам данных со своего Телеграм-канала по SQL и базам данных. Итак, среди прочих, имеется таблица выставленных счетов INVOICES:
В некотором отчёте АБС количество счетов, выставленных за текущий день формируется SQL запросом:
SELECT COUNT(*) COUNT_INV FROM INVOICES WHERE DATE(DATE_CREATE) = CURRENT_DATE
Всем привет
Хочу поделиться неприятной историей которая оставила неприятный осадочек
На просторах интернета есть много различных порталов и свободной информации про обучение по ORACLE, но в телеграмме их не очень много и я наткнулся на канал Кивилева Дениса
Отдельной веткой от канала есть телеграмм чат который как я предполагаю был изначально создан чтобы все кто в него вступили могли обсуждать все вопросы которые у разработчиков и начинающих программистов могут возникнуть касаемо ORACLE
У меня было недостаточно знаний по оптимизации в ORACLE, и я обратился к Денису помочь разобраться с планами запросов, на что получил ответ аля покупай мой курс за 240к
Проходит время и он выкладывает пост что он открывает мини-курс по оптимизации
В своем посте цены Денис не указывает
Я пишу в комментарии что знания хорошие а курс дорогой и хотелось бы более адекватный денник а не покупать курс по цене "Индекса идиота" за 240к
Большинство пользователей поддержало мою мысль о том что курс +- хороший но реально дорогой, большинство покупать курс по индексу идиота не согласны.
Проходит время просыпается Денис и вуаля я в муте в чате (скриншот выше что мне запретили писать), пишу Денису в личку
Спустя пол часа как пошли обширные дискуссии в телеграмм чате Денис заблокировал и удалил меня с канала. ( какой я плохой всех потенциальных клиентов разогнал своим сообщением что у тебя дорогой курс по цене "индекса идиота")
Сложилось такое мнение о Денисе что ему нужны исключительно деньги а на общее развитие молодого поколения ему глубоко пофигу, ему говоришь у тебя курсы очень дорогие, без конструктивного диалога он включает обиженку мутит и удаляет с канала и чата, 21 век на дворе мужику 40 лет.
P.S Проходил курсы по PL/SQL у Ильи Хохлова, совсем другой подход, адекватный ценник, всегда старается максимально растолковать и донести информацию.
Илья красавчик!!!!
Денис дизлайк - подумай над своим поведением
Привет всем, буду краток. Выходной, погода хреновая, дома скучно, решил поразвлечься.
Накатить на виртуальную машину KaliLinux. Всё вроде установил, настроил, но при запуске выдает ошибку "Не удалось получить параметр дисплея".
Код ошибки:
E_INVALIDARG (0x80070057)
Компонент:
DisplayWrap
Интерфейс:
IDisplay {4680b2de-8690-11e9-b83d-5719e53cf1de}
Загуглять пытался, там все отсылки по коду ошибки идут на дисковое пространство, а тут дисплей. Ну и в логах наткнулся на такое:
"00:00:04.397118 Max display size: 5632x5632
00:00:04.397119 Display size: 4294967295x4294967295 32bpp"
Может знает кто, что делать?
ПыСы, кароче грохнул, c Hyper-V сделал
Всем привет! Предлагаю ещё одну интересную задачу со своего Телеграм-канала по SQL. На текущий день, у меня 1.8 К подписчиков и я получил лишь несколько решений этой задачи! Попробуй свои силы!
Даны две таблицы ORDERS (заказы) и ORDER_ITEMS (позиции заказов).
Таблица ORDERS, имеет следующую структуру:
Таблица ORDER_ITEMS имеет структуру:
Каждый заказ может иметь несколько позиций заказа (несколько строк в таблице ORDER_ITEMS). Столбец ID_PRODUCT указывает на товар позиции заказа, а в столбце AMOUNT хранится его количество (сколько штук товара взято в позицию заказа). Задача: написать запрос, выводящий номера и даты заказов, где все позиции заказа имеют количество (значение в столбце AMOUNT) равным одному.
1. Есть DISTINCT ON
В PostgreSQL оператор DISTINCT можно использовать не только после слова SELECT для вывода уникальных строк всего набора данных, и не только внутри агрегатных функций, но ещё и для вывода лишь одной строки из нескольких, которые имеют одинаковое значение в указанном столбце (столбцах). В этом случае, с помощью ORDER BY можно определить какую именно из выводящихся строк с одинаковым значением в указанном столбце или столбцах, нужно вывести.
В отличие от обычного DISTINCT, который убирает дубликаты по всем полям в SELECT, DISTINCT ON (<столбец или набор столбцов>) выбирает первую строку для каждой группы значений в указанном в скобочках столбце (или наборе столбцов).
Так можно вывести последний заказ каждого пользователя:
SELECT DISTINCT ON (user_id) user_id, order_id, order_date, amount FROM orders ORDER BY user_id, order_date DESC;
2. Можно выводить строки без столбцов
Это ещё одна особенность PostgreSQL. Запросы SELECT, в которых не указаны ни поля после слова SELECT, ни звёздочка, прекрасно выполняются. Пример на PostgreSql версии 16.5:
И даже chatgpt об этом (пока ещё) не знает.
3. С помощью GENERATE_SERIES можно на лету генерировать динамические таблицы чисел, дат, дней недели и другую информацию
Вывести дни недели можно следующим способом:
А так, например, можно вывести все числа января и февраля:
Продолжая предыдущий пример, можно добавить вывод количеств посещений сайта prime-soft.biz в выводимые даты:
Напиши под постом что удивило в PostgreSql именно тебя. Буду очень рад, если поделишься опытом! И, конечно, буду рад, твоему лайку моей статье! А ещё у меня есть Телеграм канал, в котором регулярно решаем задачи по SQL с собеседований и реальной практики!
Всем доброго понедельника!
Как насчёт очередной небольшой задачи по SQL с нашего Телеграм-канала?
В базе данных (на примере СУБД ORACLE), среди прочих, есть три таблицы, определённые следующим образом:
/* Таблица Сотрудники */
CREATE TABLE PERS (
ID NUMBER PRIMARY KEY,
FIO VARCHAR(100) NOT NULL,
PHONE VARCHAR(10) DEFAULT '' NOT NULL);
/* Автомобили сотрудников */
CREATE TABLE CARS (
ID NUMBER PRIMARY KEY,
BRAND VARCHAR(50) NOT NULL,
MODEL VARCHAR(50) NOT NULL,
ID_PERS_OWNER NUMBER NOT NULL,
CONSTRAINT FK_CAR_OWNER FOREIGN KEY
(ID_PERS_OWNER) REFERENCES PERS(ID)
);
/* Сотрудники-водители */
CREATE TABLE DRIVERS (
ID_PERS NUMBER PRIMARY KEY,
DRIVE_LICENSE_NUM VARCHAR(20) DEFAULT NULL,
CONSTRAINT FK_PERS_DRIVER FOREIGN KEY
(ID_PERS) REFERENCES PERS(ID)
);
В таблице PERS данные:
ID FIO PHONE
1 Иванов И.И. 9057553111
2 Петров П.П. 9104454545
3 Сидоров А.И. 9113457778
В таблице CARS данные:
ID BRAD MODEL ID_PERS_OWNER
1 Ауди А4 1
2 Фиат Панда 2
3 Форд Мондео 2
Какой результат вернёт выполнение следующего SQL-скрипта, состоящего из трёх команд?
TRUNCATE TABLE DRIVERS;
INSERT INTO DRIVERS
(ID_PERS)
SELECT p.ID
FROM PERS p
JOIN CARS c
On c.ID_PERS_OWNER = p.ID;
SELECT COUNT(*)
FROM DRIVERS;