
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

Google

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

Fike
08.08.2018
06:39:02

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

Ilia
08.08.2018
06:40:09

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

Ilia
08.08.2018
06:42:38

Alexey
08.08.2018
06:43:09

Ilia
08.08.2018
06:43:55

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


Alexey
08.08.2018
06:48:04
Всем привет! подскажите, пожалуйста - вложенный селект в селект берет данные из вышестоящего селекта или ему без разницы и он селектит по всей таблице?
составляю запрос и мне надо в заселекченных данных выдернуть значения еще по одному критерию
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 IN (SELECT MAX(pay_date) FROM payments)
AND payments.pay_date < '2018-08'
AND tarifs.rent<>0
AND rentcharge.c_date = '2018-08-01';
вопрос касательно строки
AND payments.pay_date IN (SELECT MAX(pay_date) FROM payments)
этот селект уже будет селектить в том, что населектилось в большом запросе или нет?
Давайте спросим для начала какая БД ?


Roman
08.08.2018
06:48:18
mysql

Ilia
08.08.2018
06:48:45

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.
Но я ещё не понимаю что тебе надо, потому как ты не до конца сформулировал .


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 спасибо, сейчас попробую

Ilia
08.08.2018
07:05:49

Roman
08.08.2018
07:06:08
с начала времен : )
до текущей даты
т.е. максимально близкую дату к текущей

Alexey
08.08.2018
07:07:11

Ilia
08.08.2018
07:07:13

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

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

Alexey
08.08.2018
07:24:30

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
ну, примерно так
хотя я бы конечно чуть по-другому сам скрипт написал, одним селектом. Но суть примерно та же

Evgeniy
08.08.2018
08:01:06

Ilia
08.08.2018
08:02:37

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

Ilia
08.08.2018
08:03:17

Alexey
08.08.2018
08:04:25

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