powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Показать дату и время по первой сделке
4 сообщений из 4, страница 1 из 1
Показать дату и время по первой сделке
    #39862030
artem_ne_artem
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток!
Есть некая таблица. Клиент, дата сделка, время сделки, сумма

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

Собственно сам вопрос, а можно ли это написать каким то другим способом ?
...
Рейтинг: 0 / 0
Показать дату и время по первой сделке
    #39862036
Фотография vikkiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
artem_ne_artem,

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
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
...
Рейтинг: 0 / 0
Показать дату и время по первой сделке
    #39862037
Фотография vikkiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
101 и 108 естественно лишние
...
Рейтинг: 0 / 0
Показать дату и время по первой сделке
    #39862040
artem_ne_artem
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vikkiv,

Спасибо, это конечно намного удобнее)
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Показать дату и время по первой сделке
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]