|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
31.01.2023, 19:41 | #1 |
Новичок
Джуниор
Регистрация: 31.01.2023
Сообщений: 2
|
Где ошибка в sql-коде (запросе)? Запрос в Access.
SELECT TOP 3 department.parent_id AS Департамент, TOP 3 department.dep_name AS Управление, ROUND(avg(Datediff("yyyy",birthdate ,Date())+(Format(birthdate,"mmdd")> Format(Date(),"mmdd"))),0) AS Средний_возраст
FROM employee LEFT JOIN department ON employee.dep_id = department.dep_id GROUP BY department.parent_id, department.dep_name HAVING department.dep_name IS NULL OR department.dep_name LIKE 'Управление *' ORDER BY ROUND(avg(Datediff("yyyy",birthdate ,Date())+(Format(birthdate,"mmdd")> Format(Date(),"mmdd"))),0) UNION SELECT TOP 3 department.parent_id AS Департамент, TOP 3 department.dep_name AS Управление, ROUND(avg(Datediff("yyyy",birthdate ,Date())+(Format(birthdate,"mmdd")> Format(Date(),"mmdd"))),0) AS Средний_возраст FROM employee RIGHT JOIN department ON employee.dep_id = department.dep_id GROUP BY department.parent_id, department.dep_name HAVING department.dep_name IS NULL OR department.dep_name LIKE 'Управление *' ORDER BY ROUND(avg(Datediff("yyyy",birthdate ,Date())+(Format(birthdate,"mmdd")> Format(Date(),"mmdd"))),0); Задача: выгрузить топ-3 подразделения по среднему возрасту. Может кто-то помочь без приложенного файла Access? Последний раз редактировалось Access54321; 31.01.2023 в 19:45. |
31.01.2023, 20:09 | #2 |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,528
|
Код:
программа — запись алгоритма на языке понятном транслятору
|
31.01.2023, 20:22 | #3 | |
Новичок
Джуниор
Регистрация: 31.01.2023
Сообщений: 2
|
Цитата:
Причем, по отдельности вот так работает (см. ниже), но, когда объединяю через UNION LEFT и RIGHT JOINы, - выдает ошибку. Вот это работает: SELECT TOP 3 department.parent_id AS Департамент, department.dep_name AS Управление, ROUND(avg(Datediff("yyyy",birthdate ,Date())+(Format(birthdate,"mmdd")> Format(Date(),"mmdd"))),0) AS Средний_возраст FROM employee RIGHT JOIN department ON employee.dep_id = department.dep_id GROUP BY department.parent_id, department.dep_name ORDER BY ROUND(avg(Datediff("yyyy",birthdate ,Date())+(Format(birthdate,"mmdd")> Format(Date(),"mmdd"))),0) DESC И вот это работает: SELECT TOP 3 department.parent_id AS Департамент, department.dep_name AS Управление, ROUND(avg(Datediff("yyyy",birthdate ,Date())+(Format(birthdate,"mmdd")> Format(Date(),"mmdd"))),0) AS Средний_возраст FROM employee LEFT JOIN department ON employee.dep_id = department.dep_id GROUP BY department.parent_id, department.dep_name ORDER BY ROUND(avg(Datediff("yyyy",birthdate ,Date())+(Format(birthdate,"mmdd")> Format(Date(),"mmdd"))),0) DESC Последний раз редактировалось Access54321; 31.01.2023 в 20:26. |
|
01.02.2023, 09:08 | #4 |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,528
|
order by 3 написать ОДИН раз в конце
программа — запись алгоритма на языке понятном транслятору
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
asp.net linq запрос в запросе (как то так) | ogamilait | C# (си шарп) | 6 | 16.02.2015 20:59 |
Ошибка в запросе к БД Access | Tanzor69 | БД в Delphi | 5 | 17.04.2013 09:47 |
not null в запросе в коде пхп | Golovastik | PHP | 4 | 17.07.2010 16:44 |
Ошибка в коде Exel to Access | infog | Microsoft Office Access | 4 | 15.10.2009 20:02 |
Ошибка в запросе к БД Access | Vit@L | БД в Delphi | 8 | 26.09.2009 18:22 |