Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Можно ли сделать одним запросом
|
|||
|---|---|---|---|
|
#18+
Есть две таблицы: сотрудники и отделы: emp, otdel сотрудники: emp id, name, birth, sex, id_otd id номер по порядку name имя birth Дата рождения sex Пол - 1-м, 0-ж id_otd номер отдела отделы: otdel id_otd, name_otd id_otd номер отдела name_otd название отдела возможно ли одним запросом построить такую таблицу хотя бы по одному отделу: например сначала - отдел кадров (1), потом запуская этот же запрос с номером другого отдела - отдел продаж (2) и так дальше.. отдел кадров ---------------------------- возраст М Ж ---------------------------- 20 4 0 21 3 2 22 10 7 23 21 8 ..... 69 2 1 70 1 0 К сожалению, меня хватило только на такое.. select year(CURRENT DATE-birth) vozr from emp e join otdel ot on e.id_otd=ot.id_otd where ot.id_otd in ( 1 ) and e.sex=1 order by vozr получаю список с одинаковыми возрастами и по одному полу, например М (1) одного отдела, потом запускаю запрос с полом Ж (0) и так для каждого отдела потом уже макросиком делаю нужную мне таблицу.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2016, 00:10 |
|
||
|
Можно ли сделать одним запросом
|
|||
|---|---|---|---|
|
#18+
cold09, Как-то так Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2016, 09:25 |
|
||
|
Можно ли сделать одним запросом
|
|||
|---|---|---|---|
|
#18+
Mark Barinstein, ага... Огромное спасибо за пинок! А то как обычно самому не соображается.. Я так понял первым ключевым моментом было создание подзапроса vozr - честно сказать не додумался бы для этого использовать фразу distinct А вторым - left join emp e on a.vozr=year(current date-e.birth) А я всё никак не понимал как же сделать группировку по полю возраста? Никак не получалось.. Спасибо за науку! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2016, 06:59 |
|
||
|
Можно ли сделать одним запросом
|
|||
|---|---|---|---|
|
#18+
Mark Barinstein, а вот в подзапросе НЕЛЬЗЯ использовать WHERE ? вот тут: select distinct year(CURRENT DATE-birth) vozr from emp where tmp.birth is not null ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2016, 01:57 |
|
||
|
Можно ли сделать одним запросом
|
|||
|---|---|---|---|
|
#18+
Mark Barinstein, просто не могу понять.. пробую запустить запрос на реальных данных ошибка [Error Code: -420, SQL State: 22018] DB2 SQL Error: SQLCODE=-420, SQLSTATE=22018, SQLERRMC=DECFLOAT, DRIVER=4.18.60 база старая и поля дат рождения есть пустые, пол тоже пустой.. имитирую пропуски значений в данных не в базе а в with emp (id, name, birth, sex, id_otd, status_id) as (values (1, '1', date('1970-01-01'), 'М', 1,1) , (2, '2', date('1980-01-02'),null, 1,2) .... ставлю пустые значения в разных местах и по отдельности и вместе.. запрос отрабатывает чётко.. как только кручу на базе - ошибка.. Для определённости могу сказать, что добавил вот такой фильтр в основной запрос .... where ot.name_otd=001 тогда ошибка, если убираю фильтр - крутится бесконечно... записей в таблице emp - 80 тысяч.. в справочниках - не больше 20 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2016, 05:34 |
|
||
|
|

start [/forum/topic.php?fid=43&msg=39221993&tid=1600615]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
54ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
31ms |
get tp. blocked users: |
1ms |
| others: | 11ms |
| total: | 133ms |

| 0 / 0 |
