Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
artem_ne_artem Member Откуда: Сообщений: 2 |
Доброго времени суток! Есть некая таблица. Клиент, дата сделка, время сделки, сумма CREATE TABLE Test_3 (client_id VARCHAR(30), date_app DATE, time_app TIME, Sale int); INSERT INTO Test_3 values ('002', '20170703', '10:23', 24546), ('002', '20170703', '12:43', 5564), ('002', '20170910', '19:57', 3456), ('002', '20171017', '14:02', 65343), ('003', '20170424', '16:23', 34346), ('003', '20170602', '12:10', 45645), ('003', '20170602', '09:10', 56454) Необходимо: по каждому клиенту показать сумму всех сделок, сред сумму и количество. + Дата и время ПО ПЕРВОЙ СДЕЛКЕ. Я вижу это так: Select t1.client_id, t2.date_app, t2.time_app, sum(t1.sale) as 'sum', avg(t1.sale) as 'avg', count(t1.sale) as 'count' From Test_3 as t1 Left Join (Select t0.* From (select *, ROW_NUMBER() OVER (Partition by client_id Order by date_app, time_app) as 'number' From test_3) as t0 Where t0.number=1) as t2 ON t2.client_id = t1.client_id Group by t1.client_id, t2.date_app, t2.time_app Собственно сам вопрос, а можно ли это написать каким то другим способом ? |
15 сен 19, 16:12 [21971194] Ответить | Цитировать Сообщить модератору |
vikkiv Member Откуда: EU Сообщений: 2921 |
artem_ne_artem,declare @t TABLE (c VARCHAR(30), d DATE, t TIME, q int) INSERT INTO @t values ('002', '20170703', '10:23', 24546), ('002', '20170703', '12:43', 5564), ('002', '20170910', '19:57', 3456), ('002', '20171017', '14:02', 65343), ('003', '20170424', '16:23', 34346), ('003', '20170602', '12:10', 45645), ('003', '20170602', '09:10', 56454) select c cl,sum(q)sum,avg(q)avg,count(1)count --,min(cast(d as datetime)+cast(t as datetime))dt ,CONVERT(date,min(cast(d as datetime)+cast(t as datetime)),101)date ,CONVERT(time,min(cast(d as datetime)+cast(t as datetime)),108)time from @t group by c order by 1 |
15 сен 19, 16:58 [21971204] Ответить | Цитировать Сообщить модератору |
vikkiv Member Откуда: EU Сообщений: 2921 |
101 и 108 естественно лишние |
15 сен 19, 17:02 [21971205] Ответить | Цитировать Сообщить модератору |
artem_ne_artem Member Откуда: Сообщений: 2 |
vikkiv, Спасибо, это конечно намного удобнее) |
15 сен 19, 17:11 [21971208] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |