Нужна помощь в разработке правильного запроса SQL - PullRequest
1 голос
/ 03 февраля 2011

У меня есть эта таблица:

DebitDate | DebitTypeID | DebitPrice | DebitQuantity
----------------------------------------------------
40577       1             50           3
40577       1             100          1
40577       2             75           2
40578       1             50           2
40578       2             150          2

Я хотел бы получить с одним запросом (если это возможно) следующие данные: date, debit_id, total_sum_of_same_debit, how_many_debits_per_day

, так чтоВ приведенном выше примере я получил бы:

40577, 1, (50*3)+(100*1), 2 (because 40577 has 1 and 2 so total of 2 debits per this day)
40577, 2, (75*2), 2 (because 40577 has 1 and 2 so total of 2 debits per this day)
40578, 1, (50*2), 2 (because 40578 has 1 and 2 so total of 2 debits per this day)
40578, 2, (150*2), 2 (because 40578 has 1 and 2 so total of 2 debits per this day)

Итак, у меня есть этот запрос sql:

SELECT      DebitDate, DebitTypeID, SUM(DebitPrice*DebitQuantity) AS TotalSum
FROM        DebitsList
GROUP BY    DebitDate, DebitTypeID, DebitPrice, DebitQuantity

И теперь у меня возникли проблемы, и я не уверен, куда поставить счетдля последней информации мне нужно.

Ответы [ 2 ]

1 голос
/ 03 февраля 2011

Вам понадобится коррелированный подзапрос, чтобы получить этот новый столбец. Вам также нужно удалить DebitPrice и DebitQuantity из предложения GROUP BY, чтобы оно работало.

SELECT   DebitDate,
         DebitTypeID,
         SUM(DebitPrice*DebitQuantity) AS TotalSum,
         (   select Count(distinct E.DebitTypeID)
             from DebitsList E
             where E.DebitDate=D.DebitDate) as CountDebits
FROM     DebitsList D
GROUP BY DebitDate, DebitTypeID
0 голосов
/ 03 февраля 2011

Я думаю, что это может вам помочь.

SELECT      DebitDate,  SUM(DebitPrice*DebitQuantity) AS TotalSum, Count(DebitDate) as DebitDateCount
FROM        DebitsList where DebitTypeID = 1
GROUP BY    DebitDate
...