Возможно ли улучшить запрос?
От: Denisello  
Дата: 22.12.05 11:18
Оценка:
Всем доброго дня и хорошего настроения!

Вопрос по MSSQL 2000.

Есть некая таблица с полями Amount (float) и Type (char).
Мне необходимо вывести суммы Amount'ов для разных типов Type. Я делаю это так:
SELECT
(
SELECT SUM(Amount) FROM MyTable WHERE Type = 'A'
) AS AmountA,
(
SELECT SUM(Amount) FROM MyTable WHERE Type = 'B'
) AS AmountB

и т.д.

Возможно ли оптимизировать данный запрос, улучшив быстродействие?

Заранее благодарен.
Re: Возможно ли улучшить запрос?
От: Ромашка Украина  
Дата: 22.12.05 11:26
Оценка:
Здравствуйте Denisello, Вы писали :
> Возможно ли оптимизировать данный запрос, улучшив быстродействие?
???
select Type, sum(Amount) as Amount
from myTable
group by Type
Posted via RSDN NNTP Server 2.0


Всё, что нас не убивает, ещё горько об этом пожалеет.
Re: Возможно ли улучшить запрос?
От: a.dzuba Россия  
Дата: 22.12.05 11:27
Оценка:
D>Есть некая таблица с полями Amount (float) и Type (char).
D>Мне необходимо вывести суммы Amount'ов для разных типов Type. Я делаю это так:
D>SELECT
D>(
D> SELECT SUM(Amount) FROM MyTable WHERE Type = 'A'
D>) AS AmountA,
D>(
D> SELECT SUM(Amount) FROM MyTable WHERE Type = 'B'
D>) AS AmountB

Используй ключевое слово GROUP BY.
select sum(amount) from mytable group by type
Re: Возможно ли улучшить запрос?
От: protected  
Дата: 22.12.05 11:28
Оценка:
Здравствуйте, Denisello, Вы писали:

D>Всем доброго дня и хорошего настроения!


D>Вопрос по MSSQL 2000.


D>Есть некая таблица с полями Amount (float) и Type (char).

D>Мне необходимо вывести суммы Amount'ов для разных типов Type. Я делаю это так:
D>SELECT
D>(
D> SELECT SUM(Amount) FROM MyTable WHERE Type = 'A'
D>) AS AmountA,
D>(
D> SELECT SUM(Amount) FROM MyTable WHERE Type = 'B'
D>) AS AmountB

D>и т.д.




SELECT SUM(Amount), Type
FROM MyTable
GROUP BY Type
Re: Всем ответившим спасибо.
От: Denisello  
Дата: 22.12.05 11:50
Оценка:
P.S. Правда изначально мне нужно было вернуть все это в одной строке.
Т.е. разные типы Amount'ов раскидываются не по строкам, а по полям. В таком случае, интересно, можно изменить запрос?

Тем не менее, мне такой вариант тоже подходит. Всем спасибо.
Re[2]: Всем ответившим спасибо.
От: pkarklin  
Дата: 22.12.05 11:53
Оценка: 1 (1) +1 :)
Здравствуйте, Denisello, Вы писали:

D>P.S. Правда изначально мне нужно было вернуть все это в одной строке.

D>Т.е. разные типы Amount'ов раскидываются не по строкам, а по полям. В таком случае, интересно, можно изменить запрос?

D>Тем не менее, мне такой вариант тоже подходит. Всем спасибо.



SELECT
  SUM(CASE WHEN Type = 'A' THEN Amount END) AS Sum_A,
  SUM(CASE WHEN Type = 'B' THEN Amount END) AS Sum_B
FROM
 ...
Re[3]: Всем ответившим спасибо.
От: Denisello  
Дата: 22.12.05 12:03
Оценка:
Здравствуйте, pkarklin, Вы писали:

P>
P>SELECT
P>  SUM(CASE WHEN Type = 'A' THEN Amount END) AS Sum_A,
P>  SUM(CASE WHEN Type = 'B' THEN Amount END) AS Sum_B
P>FROM
P> ...
P>


Спасибо!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.