powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Подсчёт разных клиентов по одной карте
7 сообщений из 7, страница 1 из 1
Подсчёт разных клиентов по одной карте
    #40076957
elay13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Присутсвует следующая таблица:

CREATE TABLE #t (date_time date, client_id nvarchar(50), app_id nvarchar(50),card_number nvarchar(50));
INSERT INTO #t VALUES

('2021-01-01','A','1r111','1****1'),
('2022-02-02','A','2r222','1****1'),
('2023-03-03','B','3r333','1****1'),
('2024-04-04','C','4r444','1****1'),
('2025-05-05','B','5r555','1****1'),
('2026-06-06','B','6r666','1****1'),
('2027-07-07','B','7r777','1****1');

app_id - id заявки, всегда уникальное значение
client_id - id клиента, тянется за клиентом
сard_number - номер карты, в этой таблице все клиенты пользовались одной картой.

Подскажите, каким образом я могу создать запрос, который будет подсчитывать сколько разных клиентов пользовались картой, на момент заявки? Группировка должна быть по app_id.

Итог, который хотелось бы получить:

app_id client_count
1r111 1
2r222 1
3r333 2
4r444 3
5r555 3
6r666 3
7r777 3

Заранее спасибо!
...
Рейтинг: 0 / 0
Подсчёт разных клиентов по одной карте
    #40076958
L_argo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
что-то типа

count(distinct client_id)
...
Рейтинг: 0 / 0
Подсчёт разных клиентов по одной карте
    #40076986
Фотография court
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
elay13,

так как-то
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
with cte as (
	select
		*
		,case when row_number()over(partition by client_id order by date_time)=1 then 1 else 0 end as xz
	from #t t
)
select 
	app_id
	,sum(xz)over(order by date_time) as xz
from cte


app_idxz1r11112r22213r33324r44435r55536r66637r7773
...
Рейтинг: 0 / 0
Подсчёт разных клиентов по одной карте
    #40076989
Фотография court
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
даа, и карту, конечно, в partition нужно, если выборка по нескольким картам будет ...

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
with cte as (
	select
		*
		,case when row_number()over(partition by card_number, client_id order by date_time)=1 then 1 else 0 end as xz
	from #t t
)
select 
	*
	,sum(xz)over(partition by card_number order by date_time) as xz
from cte
...
Рейтинг: 0 / 0
Подсчёт разных клиентов по одной карте
    #40076996
Кесарь
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
court,

всегда завидовал людям, которые умеют понимать ТЗ по столь малым предпосылкам!

Подскажите, каким образом я могу создать запрос, который будет подсчитывать сколько разных клиентов пользовались картой, на момент заявки? Группировка должна быть по app_id.

Вот что значит "на момент заявки"??? Что такое момент заявки? Где это объяснено?

Про то, что никак тоже не описано, как заявки связаны с клиентами, я даже уже и говорить не буду.
...
Рейтинг: 0 / 0
Подсчёт разных клиентов по одной карте
    #40077090
elay13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
court, Огромное спасибо!
...
Рейтинг: 0 / 0
Подсчёт разных клиентов по одной карте
    #40077093
elay13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
court, Огромное спасибо!
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Подсчёт разных клиентов по одной карте
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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