powered by simpleCommunicator - 2.0.18     © 2024 Programmizd 02
Map
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Пожалуйста помогите с запросом
15 сообщений из 15, страница 1 из 1
Пожалуйста помогите с запросом
    #40133845
cheba111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У меня есть две таблицы - пользователи, вакансии, отклики на вакансии.]
В таблице юзеры и вакансии - у меня хранится вся информация о вакансиях и юзерах.
В таблице отклики на вакансии у меня хранятся отклики на них - то есть id вакансии, id откликнувшегося юзера, дата отклика.

Мне нужно найти процент тех пользователей, которые откликнулись второй раз, причем на другую вакансию.

Это скорее всего делается с помощью оконных функций, но я не понимаю как определить кол-во таких пользователей.
Заранее спасибо!
...
Рейтинг: 0 / 0
Пожалуйста помогите с запросом
    #40133846
PizzaPizza
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cheba111,

выбираете count id откликнувшегося юзера / ( count из юзеры ) и умножаете на 100
из отклики на вакансии
где exists отклик с id вакансии не равным id вакансии

это дает вам оба "откликнулись второй раз, причем на другую вакансию" только не второй раз, а больше одного раза

cheba111В таблице юзеры и вакансии - у меня хранится вся информация о вакансиях и юзерах.
непонятно что это вообще
...
Рейтинг: 0 / 0
Пожалуйста помогите с запросом
    #40133847
cheba111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PizzaPizza,

вот у меня такие таблицы
1. Users
a. Id – идентификатор юзера, UInt32
b. created_at – датавремя регистрации юзера в базе, DateTime
c. user_type – 0 если юзер – кандидат, 1 – если рекрутер, UInt8
d. birthday – дата рождения пользователя, Date
e. sex – 1 если мужчина, 0 если женщина, UInt8
f. nationality_id – 0 если юзер – РФ, 1 если юзер – не РФ, UInt8
g. last_online_at – время, когда пользователь был последний раз онлайн, DateTime
h. region – регион пользователя, String
i. city – город пользователя, String

2. Jobs
a. Id – идентификатор вакансии, UInt32
b. created_at – датавремя создания вакансии в базе, DateTime
c. user_id – идентификатор пользователя, создавшего вакансию, UInt32
d. profession – профессия данной вакансии, String
e. region – регион вакансии, String
f. city – город вакансии, String

3. Applications (отклики на вакансию)
a. Id – идентификатор отклика, UInt32
b. created_at – датавремя создания отклика, DateTime
c. job_id – идентификатор вакансии, на которую пришел отклик, UInt32
d. recruiter_id – идентификатор рекрутера, UInt32 В
e. candidate_id – идентификатор кандидата, UInt32 В

Весь вопрос в том - как гарантировать что именно второй отклик был совершен на другую вакансию...
За ответ - спасибо
...
Рейтинг: 0 / 0
Пожалуйста помогите с запросом
    #40133848
cheba111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
cheba111,

то есть у пользователя может быть множество откликов на разные вакансии и у меня есть информация о дате отклика
то есть мне нужно как-то отсортировать по дате информацию по откликам на вакансии по каждому юзеру - и взять самые старые записи ( соот-но первый и второй отклик пользователя)
...
Рейтинг: 0 / 0
Пожалуйста помогите с запросом
    #40133849
SergiiW
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
cheba111
В таблице юзеры и вакансии - у меня хранится вся информация о вакансиях и юзерах.
Неожиданно!

cheba111
Это скорее всего делается с помощью оконных функций,

Конечно, можно, но зачем? Есть более простое решение, например.
1. Посчитать количество откликнувшихся второй раз. Подсказка - используйте HAVING.
2. Поделить на количество всего откликнувшихся. Надеюсь, тут подсказок не нужно?
...
Рейтинг: 0 / 0
Пожалуйста помогите с запросом
    #40133851
cheba111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SergiiW,

спасибо за ответ
но как гарантировать, что откликнувшиеся второй раз - откликнулись на другую вакансию?
...
Рейтинг: 0 / 0
Пожалуйста помогите с запросом
    #40133852
SergiiW
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
cheba111,

cheba111
но как гарантировать, что откликнувшиеся второй раз - откликнулись на другую вакансию?

Код: sql
1.
SELECT candidate_id FROM Applications GROUP BY candidate_id HAVING COUNT(DISTINCT job_id) > 1;
...
Рейтинг: 0 / 0
Пожалуйста помогите с запросом
    #40133853
cheba111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SergiiW,

спасибо за ответ, но ваш ответ не гарантирует, что именно второй отклик человека был на другую вакансию.
Поясню: человек оставляет отклики на вакансии, есть даты откликов.
Вот каким то образом мне нужно определить кол-во людей, которые именно во второй раз откликнулись на вакансию отличную от вакансии первого отклика.
...
Рейтинг: 0 / 0
Пожалуйста помогите с запросом
    #40133854
SergiiW
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
cheba111,
Код: sql
1.
HAVING COUNT(DISTINCT job_id) > 1


Вот это условие и гарантирует, что был отклик на 2 и более вакансии от оного кандидата (candidate_id).
...
Рейтинг: 0 / 0
Пожалуйста помогите с запросом
    #40133855
cheba111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SergiiW,

мне нужно рассмотреть ситуацию 2-х откликов
То есть если человек первый раз откликнулся на вакансию x , второй раз на вакансию x, третий на вакансию y
- ваш запрос посчитает это за истину
В моем же случае необходимо считать за истину следующий случай - первый раз на x, второй на y
Третий, четвертый не интересуют....
...
Рейтинг: 0 / 0
Пожалуйста помогите с запросом
    #40133856
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cheba111
У меня есть две таблицы - пользователи, вакансии, отклики на вакансии.]
В таблице юзеры и вакансии - у меня хранится вся информация о вакансиях и юзерах.
В таблице отклики на вакансии у меня хранятся отклики на них - то есть id вакансии, id откликнувшегося юзера, дата отклика.

Звучит как голимый БСК.

Покажите это в коде. Выложите полные CREATE TABLE всех таблиц, INSERT INTO с примером данных (5-10 записей на таблицу) и требуемый результат для именно таких данных. Желательно откровенно ненужные для вопроса и не влияющие на результат поля удалить.

cheba111
нужно найти процент тех пользователей, которые откликнулись второй раз, причем на другую вакансию.

А если он откликнулся второй раз на ту же вакансию, а третий раз на другую - его считать или нет?

А в общем - не вижу ну ничего сложного. Если MySQL - версии 8+. На старой 5.х будет немного сложнее... но тоже не бином Ньютона.
...
Рейтинг: 0 / 0
Пожалуйста помогите с запросом
    #40133857
cheba111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina,
>А если он откликнулся второй раз на ту же вакансию, а третий раз на другую - его считать или нет?
нет, в таком случае его не нужно считать
...
Рейтинг: 0 / 0
Пожалуйста помогите с запросом
    #40133858
SergiiW
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
cheba111
нет, в таком случае его не нужно считать

Только если откликнулся на две вакансии не важно сколько раз
Код: sql
1.
HAVING COUNT(DISTINCT job_id) = 2



Если было два отклика и на разные вакансии
Код: sql
1.
HAVING COUNT(*) = 2 AND COUNT(DISTINCT job_id) = 2
...
Рейтинг: 0 / 0
Пожалуйста помогите с запросом
    #40133860
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Схематично:
Код: sql
1.
2.
3.
4.
5.
6.
7.
WITH cte AS ( SELECT *, ROW_NUMBER() OVER (PARTITION BY person ORDER BY created_at ASC) rn
              FROM {tableset} )
SELECT person
FROM cte
WHERE rn IN (1, 2)
GROUP BY 1
HAVING COUNT(DISTINCT vacancy) = 2
...
Рейтинг: 0 / 0
Пожалуйста помогите с запросом
    #40133865
PizzaPizza
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cheba111

Весь вопрос в том - как гарантировать что именно второй отклик был совершен на другую вакансию...
За ответ - спасибо


Именно второй - примеры с ROW_NUMBER()

Хотя рекомендую оценить задачу еще раз - возможно ошибка, так как с наскоку сложно найти смысл в условии - почему не третий или четвертый.
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Пожалуйста помогите с запросом
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали тему (1): Анонимы (1)
Читали форум (1): Анонимы (1)
Пользователи онлайн (7): Анонимы (5), Yandex Bot, Bing Bot 2 мин.
x
x
Закрыть


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