0 / 0 / 1
Регистрация: 20.10.2011
Сообщений: 28
1

Добавление нового столбца провоцирует вывод ненужных данных

29.04.2013, 01:35. Показов 1506. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Приветствую. Вот код запроса:
Oracle 11 SQL
1
2
3
4
5
6
7
8
9
10
SELECT FirstName||' '||LastName "Employee", EXTRACT(YEAR FROM Orders.OrderDate) "Year",
 MAX(Order_Details.UnitPrice*Order_Details.Quantity-((Order_Details.UnitPrice*Order_Details.Quantity)*Order_Details.Discount)) "Price"
FROM Employees
FULL JOIN Orders ON
Employees.EmployeeID = Orders.EmployeeID 
FULL JOIN Order_Details
ON Orders.OrderID = Order_Details.OrderID
WHERE TO_CHAR(EXTRACT(YEAR FROM Orders.OrderDate)) = 1997
GROUP BY FirstName||' '||LastName, EXTRACT(YEAR FROM Orders.OrderDate)
ORDER BY "Price" DESC
Данный код работает успешно, однако нужно в запрос добавить столбец Orders.OrderID, соответственно в GROUP BY тоже. Это провоцирует вывод всех данных без разбора, что не нужно.
То есть надо сделать что-то вроде этого:
Название: Снимок.JPG
Просмотров: 120

Размер: 23.5 Кб
Первые страницы гугла не помогли, дальше уже отчаялся.
Спасибо.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.04.2013, 01:35
Ответы с готовыми решениями:

Добавление нового столбца в DataGridView и в первую строку данного столбца добавление значения из textbox
Привет всем! Народ подскажите как мне сделать чтобы через кнопу Button добавлялся новый столбец в...

Добавление нового столбца в таблицу
Adoquery1.close; Adoquery1.sql; Adoquery1.sql.add(alter table KTZ add...

Добавление нового столбца в таблицу БД
Есть БД Access 2007. Никак не могу найти добавления нового столбца в таблицу,т.е при нажатии на...

Добавление нового столбца в таблицу БД
ну вообщем ситуация такая: есть база данных на интербэйзе и прога для нее написанная на...

8
Эксперт Java
4091 / 3825 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 11
29.04.2013, 08:30 2
Так ведь у одного рабочего может быть несколько заказов - соответственно будет несколько Orders.OrderID.
Вам какой нужно вывести? Самый первый? Любой? Все списком?
0
0 / 0 / 1
Регистрация: 20.10.2011
Сообщений: 28
29.04.2013, 13:54  [ТС] 3
Цитата Сообщение от turbanoff Посмотреть сообщение
Так ведь у одного рабочего может быть несколько заказов - соответственно будет несколько Orders.OrderID.
Вам какой нужно вывести? Самый первый? Любой? Все списком?
Нужно максимальный по стоимости за год. Для каждого из Employee. То есть 9 строк.

Добавлено через 3 часа 47 минут
У кого-нибудь есть идеи?
0
1563 / 1041 / 94
Регистрация: 17.04.2009
Сообщений: 2,995
29.04.2013, 20:59 4
Цитата Сообщение от Mickmaggot Посмотреть сообщение
максимальный по стоимости
max() keep()
Цитата Сообщение от Mickmaggot Посмотреть сообщение
однако нужно в запрос добавить столбец Orders.OrderID, соответственно в GROUP BY тоже.
1
0 / 0 / 1
Регистрация: 20.10.2011
Сообщений: 28
30.04.2013, 00:39  [ТС] 5
Цитата Сообщение от KuKu Посмотреть сообщение
max() keep()
Обратите еще пожалуйста чуточку внимания.

Странно, сделал как в docs.oracle о MAX() KEEP(), но выдает ошибку о "Not a GROUP BY Expression".
Oracle 11 SQL
1
2
3
4
5
6
7
8
9
10
SELECT FirstName||' '||LastName "Employee", Orders.OrderID, 
MAX(Order_Details.UnitPrice*Order_Details.Quantity-((Order_Details.UnitPrice*Order_Details.Quantity)*Order_Details.Discount)) KEEP(DENSE_RANK LAST ORDER BY Employees.EmployeeID) OVER (PARTITION BY Orders.OrderID)  "Best Order Price"
FROM Employees
FULL JOIN Orders ON
Employees.EmployeeID = Orders.EmployeeID 
FULL JOIN Order_Details ON 
Orders.OrderID = Order_Details.OrderID
WHERE TO_CHAR(EXTRACT(YEAR FROM Orders.OrderDate)) = 1997
GROUP BY FirstName||' '||LastName, EXTRACT(YEAR FROM Orders.OrderDate)
ORDER BY Orders.OrderID, "Best Order Price" DESC
Хотя у них в примере кажется все тоже самое, но он работает без GROUP BY:
Oracle 11 SQL
1
2
3
4
5
6
7
SELECT last_name, department_id, salary,
   MIN(salary) KEEP (DENSE_RANK FIRST ORDER BY commission_pct)
      OVER (PARTITION BY department_id) "Worst",
   MAX(salary) KEEP (DENSE_RANK LAST ORDER BY commission_pct)
      OVER (PARTITION BY department_id) "Best"
    FROM employees
    ORDER BY department_id, salary;
0
1563 / 1041 / 94
Регистрация: 17.04.2009
Сообщений: 2,995
30.04.2013, 09:00 6
без over()
0
0 / 0 / 1
Регистрация: 20.10.2011
Сообщений: 28
30.04.2013, 09:23  [ТС] 7
Цитата Сообщение от KuKu Посмотреть сообщение
без over()
Oracle 11 SQL
1
2
3
4
5
6
7
8
9
10
SELECT FirstName||' '||LastName "Employee", Orders.OrderID,
MAX(Order_Details.UnitPrice*Order_Details.Quantity-((Order_Details.UnitPrice*Order_Details.Quantity)*Order_Details.Discount)) KEEP(DENSE_RANK FIRST ORDER BY Employees.EmployeeID)  "Best Order Price"
FROM Employees
FULL JOIN Orders ON
Employees.EmployeeID = Orders.EmployeeID 
FULL JOIN Order_Details
ON Orders.OrderID = Order_Details.OrderID
WHERE TO_CHAR(EXTRACT(YEAR FROM Orders.OrderDate)) = 1997
GROUP BY FirstName||' '||LastName, EXTRACT(YEAR FROM Orders.OrderDate)
ORDER BY "Best Order Price" DESC
Все равно просит OrderID добавить в GROUP BY => выводит все заказы. Если менять Employees.EmployeeID на Orders.OrderID в KEEP(), то выводит совсем не то, что нужно.
0
1563 / 1041 / 94
Регистрация: 17.04.2009
Сообщений: 2,995
30.04.2013, 09:37 8
Брр.. зачем в селекте то Orders.OrderID? Не старый max меняйте, а новый допишите. Ну или first_value, если max смущает.
SQL
1
MAX(Orders.OrderID) keep(бла-бла)
1
0 / 0 / 1
Регистрация: 20.10.2011
Сообщений: 28
30.04.2013, 10:01  [ТС] 9
Цитата Сообщение от KuKu Посмотреть сообщение
Брр.. зачем в селекте то Orders.OrderID? Не старый max меняйте, а новый допишите. Ну или first_value, если max смущает.
SQL
1
MAX(Orders.OrderID) keep(бла-бла)
Супер! Спасибо!
0
30.04.2013, 10:01
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.04.2013, 10:01
Помогаю со студенческими работами здесь

Добавление в DataGridView нового столбца
Уже неделю сижу не могу разобраться с этим объектом Public Class Form1 Dim dt As New...

Добавление нового столбца в таблицу + работа с edit
Есть таблица, в приложении можно удалить, добавить, редактировать поля с помощью edit-ов. Нужно...

База Данных (Добавление нового раздела)
Привет всем! У меня имеется база для активации программы.. Вид: Но мало того у каждого...

Добавление данных из столбца БД в ComboBox
Помогите пожалуйста, у меня есть база данных и мне необходимо информацию из одного столбца этой...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru