@dba_ru

Страница 602 из 718
Fike
08.08.2018
06:38:10
За ответом в Гугл.
Аргументация уровня девятого класса

Ilia
08.08.2018
06:38:16
Вы так-то оба неправы?
Ну, расскажи давай

Alexey
08.08.2018
06:38:43
А для этого примера нужно использовать аналитическую функцию KEEP (DENSE_RANK FIRST ORDER BY

Simon
08.08.2018
06:38:53
Ну, расскажи давай
Oracle select query execution order

Google
Simon
08.08.2018
06:39:00
В Гугл вбей и посмотри.

Denis
08.08.2018
06:39:14
Добрый день, помогите разобратсья с mysql. БД innodb, много запросов со статусом Waiting, попробовал cashe_size =0, но тогда проц на 100% и куча Sleep, как это можно исправить?

Fike
08.08.2018
06:39:25
Только в продвинутых фреймворках...

Ilia
08.08.2018
06:39:27
В Гугл вбей и посмотри.
Мне это не нужно

Simon
08.08.2018
06:40:00
Alexey
08.08.2018
06:40:03
http://www.sql.ru/forum/672794/povtornyy-vyzov-funkcii-v-zaprose

Fike
08.08.2018
06:40:34
Цпу работает

Исправьте пожалуйста

Alexey
08.08.2018
06:41:31
Мне это не нужно
Зачем, человек и так «все знает» и других может критиковать с зайцем на пару. Вроде люди взрослые.

Fike
08.08.2018
06:42:03
Неужели мы наконец тебя задели за апекс

Alexey
08.08.2018
06:42:26
Google
Alexey
08.08.2018
06:43:09
Ты прав, я все знаю.
Ну тогда ок, только давай советы людям правильные

Ilia
08.08.2018
06:43:55
Dmitry
08.08.2018
06:45:45
В результате и чуваку не помогли и коллегу обосрали. Парни, вы такие котики

Roman
08.08.2018
06:48:18
mysql

Roman
08.08.2018
06:49:32
касательно тех ожиданий по самому первому вопросу - да

теперь думаю как перестроить запрос все-таки

Alexey
08.08.2018
06:50:36
mysql
Тоесть аналитических функций у тебя нет

Подзапрос в условии будет в любом случае очень медленно работать

Roman
08.08.2018
06:52:04
быстро, медленно - без разницы, запрос для аналитики данных на один раз

Alexey
08.08.2018
06:55:06
Я понял как, сейчас напишу запрос

Ilia
08.08.2018
06:58:33
теперь думаю как перестроить запрос все-таки
Тебе надо переписать подзапрос твой на inline view ( подзапрос в фразу from ) с группировкой по условию, Потом это все в join, и затем уже делать фильтрацию в where. Но я ещё не понимаю что тебе надо, потому как ты не до конца сформулировал .

Подзапрос в условии будет в любом случае очень медленно работать
Не слушай его. Ламер. Сначала напиши запрос, потом думай, как быстро он будет работать и можно ли переписать быстрее

а каким образом можно реализовать вот такое MAX(payments.pay_date) < '2018-08' применительно к тому запросу?
Вот тут у тебя нет дат, есть одна дата. С этим проблемы в твоей формулировке постановки задачи

Alexey
08.08.2018
07:01:58
WITH a AS ( SELECT DISTINCT rentcharge.amount, rentcharge.block, rentcharge.c_date, agreements.number, accounts.name FROM rentcharge, accounts, agreements, tarifs, payments WHERE rentcharge.agrm_id = agreements.agrm_id AND accounts.uid = agreements.uid AND tarifs.tar_id = rentcharge.tar_id AND payments.agrm_id = agreements.agrm_id AND agreements.balance>=0 AND rentcharge.amount=0 AND rentcharge.block=0 AND payments.pay_date < '2018-08' AND tarifs.rent<>0 AND rentcharge.c_date = '2018-08-01') ) select * from a where pay_date IN (SELECT MAX(pay_date) FROM a)

Ilia
08.08.2018
07:04:42
Уважаемый следите немного за словами
Я из-за тебя шлем уронил. Плохая примета. Как ехать теперь?

Google
Roman
08.08.2018
07:04:48
по сути, в запросе единственная загвоздка - выбор из одной таблицы по 2 критериям таблица payments в ней нужно найти максимальную дату сравнить эту дату с августом вывести все уникальные связи "юзер"-"максимальная дата", которые меньше августа

@avhrst спасибо, сейчас попробую

Roman
08.08.2018
07:06:08
с начала времен : )

до текущей даты

т.е. максимально близкую дату к текущей

Alexey
08.08.2018
07:08:06
Roman
08.08.2018
07:10:11
может я объяснил так, но дальше попытался объяснить что нужно

Alexey
08.08.2018
07:10:35
я понял

Для начала рекомендую переписать запрос в более читаемую форму WITH rentcharge_ as (select * FROM rentcharge where amount=0 and block=0 and as c_date = '2018-08-01') accounts_ as (select * FROM accounts) agreements_ as (select * FROM agreements where balance>=0) tarifs_ as (select * FROM tarifs where rent<>0) payments_ as (select * FROM payments where pay_date < '2018-08') SELECT DISTINCT rentcharge_.amount, rentcharge_.block, rentcharge_.c_date, agreements_.number, accounts_.name FROM rentcharge_, accounts_, agreements_, tarifs_, payments_ HERE rentcharge_.agrm_id = agreements_.agrm_id AND accounts_.uid = agreements_.uid AND tarifs_.tar_id = rentcharge_.tar_id AND payments_.agrm_id = agreements_.agrm_id

Roman
08.08.2018
07:21:53
благодарю, сейчас попробую

Alexey
08.08.2018
07:21:53
тут можно отдельно описать условия для каждой таблицы что нужно выбрать. Потом в селекте ты уже работаеш с результатами подзапросов

Roman
08.08.2018
07:22:35
WITH выполняется отдельно, я так понимаю?

это как временная таблица?

Alexey
08.08.2018
07:23:14
WITH выполняется отдельно, я так понимаю?
Выполняется все вместе, и да это аналог View

Roman
08.08.2018
07:23:57
аналог, только не сохраняется в бд?

Alexey
08.08.2018
07:24:30
аналог, только не сохраняется в бд?
да, который описан прямо в запросе кстати Oracle так не умеет

Roman
08.08.2018
07:24:54
интересный трюк

Google
Alexey
08.08.2018
07:24:57
точнее в Oracle может быть только 1 подзапрос

зато в Oracle есть набор аналитических функций которые могуд делать очень крутые вещи без подзапросов и в один проход по данным

Валерия
08.08.2018
07:26:44
не только в ORACLE)

оракл же умеет с cte работать

Alexey
08.08.2018
07:27:13
может как то по другому называется

Валерия
08.08.2018
07:29:41
я знаю, эта конструкция в Oracle тоже работает

Simon
08.08.2018
07:30:09
не знаю
Да, умеет.

Admin
ERROR: S client not available

Alexey
08.08.2018
07:32:06
А я уже понял. Да cte есть но может быть только 1 подзапрос

Валерия
08.08.2018
07:32:40
WITH all_transportations AS ( SELECT airline_name, count(flight_code) as all_amount FROM airline JOIN flight ON (airline.airline_icao_code = flight.ariline_icao_code) GROUP BY airline_name), passenger_transportations AS ( SELECT airline_name, count(flight_code) as passenger_amount FROM airline JOIN flight ON (airline.airline_icao_code = flight.ariline_icao_code) WHERE flight_type = 'pass' GROUP BY airline_name), freight_transportations AS ( SELECT airline_name, count(flight_code) as freight_amount FROM airline JOIN flight ON (airline.airline_icao_code = flight.ariline_icao_code) WHERE flight_type = 'frei' GROUP BY airline_name) SELECT all_transportations.airline_name, all_transportations.all_amount, round(passenger_transportations.passenger_amount/all_transportations.all_amount,3)*100 AS passenger_percent, round(freight_transportations.freight_amount/all_transportations.all_amount,3)*100 AS freight_percent FROM all_transportations JOIN passenger_transportations ON (all_transportations.airline_name = passenger_transportations.airline_name) JOIN freight_transportations ON (all_transportations.airline_name = freight_transportations.airline_name)

подряд сколько угодно

аналогично MS SQL

абсолютно

Alexey
08.08.2018
07:33:51
подряд сколько угодно
блин, а мы мучаемся ?

Валерия
08.08.2018
07:34:25
нет, ну я сейчас на полном серьезе, если что

я только не знаю работает ли в ORACLe финты типа WITH cte as (SELECT * FROM Sales WHERE productID=5) DELETE FROM cte

Alexey
08.08.2018
07:35:56
нет, ну я сейчас на полном серьезе, если что
я понял, спасибо огромное. Так бывает что мы лет 10 назад пробовали - выдавало ошибку и мы перестали использовать эту возможность (других вариантов хватает) и так вся команда привыкла

Валерия
08.08.2018
07:38:36
you're welcome at any time))

Rodion
08.08.2018
07:57:39
Доброе утро всем) Кто может подсказать, как найти таблицу во всей базе mysql зная только конретное значение? к примеру '0332143027d' ?

Google
Anton
08.08.2018
07:59:03
создать скрипт из таблиц information_shema.tables и information_shema.columns, который создаёт скрипт селекта из каждой таблицы лайком по каждому полю)

Rodion
08.08.2018
08:00:02
Что то на подобии вот этого? https://club.shelek.ru/viewart.php?id=319

Anton
08.08.2018
08:00:37
ну, примерно так

хотя я бы конечно чуть по-другому сам скрипт написал, одним селектом. Но суть примерно та же

Ilia
08.08.2018
08:02:37
Rodion
08.08.2018
08:02:47
Окей ребят спасибо) Продуктивного дня ?

Alexey
08.08.2018
08:04:25
Да хоть 200...
уже все разобрались

Fike
08.08.2018
08:45:31
у вас стикерячка

Natali
08.08.2018
09:15:08
Frank
08.08.2018
09:17:31
??? Какой-то вопрос?
Нет, просто помнится в каком-то другом чатике пересекались, и телеграм интересно это учитывает, выдавая в списке участников тех с кем уже общался в первую очередь

Fike
08.08.2018
09:20:35
последних активных

ба дум тцц

Frank
08.08.2018
09:22:38
Да нет, уже многократно проверено) Ещё он любит тех кто есть в контактах вверх запихивать

Fike
08.08.2018
09:23:43


Страница 602 из 718