powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Подобие, перекрестного запроса в Access
9 сообщений из 9, страница 1 из 1
Подобие, перекрестного запроса в Access
    #38786909
Mihavk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем здравствуйте. Имеется таблица Сотрудники с полями: Код, Имя, Отдел, Зарплата, Пол. Требуется найти разницу в средней зарплате между мужчинами и женщинами по отделам. Т.е. результат запроса будет выглядеть так: Название отдела - Среднее зарплата для мужчин в этом отделе - Средняя зарплата для женщин в этом отделе - Разница между зарплатами. В Access 2007 сделал это при помощи перекрестного запроса. В MySQL насколько понимаю такого решения нет. Вот и не пойму как требуется составить условие. Пример запроса в Access 2007 прилагаю. Если не трудно подскажите пожалуйста решение.
...
Рейтинг: 0 / 0
Подобие, перекрестного запроса в Access
    #38786949
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mihavk,

Модератор: Пожалуйста, не надо постить ссылки на файлообменники. Что можно изложить текстом - пишите текстом. Что нельзя изложить текстом - прикладывайте к посту картинку.
...
Рейтинг: 0 / 0
Подобие, перекрестного запроса в Access
    #38787051
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тоже мне проблема... два подзапроса на расчёт средних зарплат с разной гендерной фильтрацией...
А чему будет равна разность, если в отделе, скажем, одни мужики?
...
Рейтинг: 0 / 0
Подобие, перекрестного запроса в Access
    #38787190
Mihavk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina, здравствуйте, ну вот такие подзапросы:

1)SELECT Сотрудники.Отдел, avg(Сотрудники.Зарплата) AS [Мужчины] FROM Сотрудники WHERE Сотрудники.Пол = "М" GROUP BY Сотрудники.Отдел;
2)SELECT Сотрудники.Отдел, avg(Сотрудники.Зарплата) AS [Женщины] FROM Сотрудники WHERE Сотрудники.Пол = "Ж" GROUP BYСотрудники.Отдел;

Я не пойму как вывести разницу, примерно вот так: ABS([Мужчины] - [Женщины]). Как все это сделать в 1 запросе. Если будут одни мужчины в отделе или одни женщины, ну наверное, пусть тогда выводит эту же зарплату, как будто бы у другого пола 0 стоит (Если есть другое предложение в этом моменте, выслушаю Вас).

На Access, при помощи перекрестного запроса было вот так:

TRANSFORM Avg(Сотрудники.Зарплата) AS [Avg-Зарплата]
SELECT Сотрудники.Отдел, (MAX([AVG-Зарплата])-MIN([AVG-зарплата])) AS [Разница в зарплате]
FROM Сотрудники
GROUP BY Сотрудники.Отдел
PIVOT Сотрудники.Пол;
...
Рейтинг: 0 / 0
Подобие, перекрестного запроса в Access
    #38787361
mikhalken
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вам в агрегатной функции надо вставить условие. Вот так примерно:
...
Рейтинг: 0 / 0
Подобие, перекрестного запроса в Access
    #38787364
mikhalken
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SELECT
отдел,
ABS(AVG(IF(пол = муж,summa,NULL)) - AVG(IF(пол = жен,summa,NULL)))
FROM таблица
GROUP BY 1
...
Рейтинг: 0 / 0
Подобие, перекрестного запроса в Access
    #38787421
Mihavk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mikhalken, спасибо, но не понял, что значит summa. Сделал вот так:

SELECT Отдел, ABS((IF(Сотрудники.Пол='М',avg(Зарплата),'null')) - (IF(Сотрудники.Пол='Ж',avg(Зарплата),'null')))
FROM Сотрудники
GROUP BY Отдел, Пол;

вот что выдал:

ОАА 6333.333333333333
ОАА 6000
КПА 9500
КПА 12500
САИ 7000
САИ 7000

Надо, что бы он объединил их опять по отделам и нашел разницу в каждом из них, что то типа такого:

ОАА 333.33333333333
КПА 3000
САИ 0

Как бы объединить 1 со 2, 3 с 4 и т.д. итерации. Нахожусь в ожидании подсказки :)
...
Рейтинг: 0 / 0
Подобие, перекрестного запроса в Access
    #38787428
mikhalken
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ты не прав, изменив мой пример))) Вот что у тебя должно быть примерно:

SELECT
Отдел,
ABS(AVG(IF(Сотрудники.Пол = 'М',Зарплата,NULL)) - AVG(IF(Сотрудники.Пол = 'Ж',Зарплата,NULL)))
FROM Сотрудники
GROUP BY 1
...
Рейтинг: 0 / 0
Подобие, перекрестного запроса в Access
    #38787431
Mihavk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mikhalken, ОГРОМНЕЙШЕЕ СПАСИБО!!! Все заработало, БРАВО :)
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Подобие, перекрестного запроса в Access
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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