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

Заголовок
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
SELECT TOP  [Dt 
,[CustomerName] ,[ItemRelation] ,[ProductName] ,[ReturnCount] ,[DocumentNum] ,[DocumentDate] ,[IsPromo] ,[CustomerType] ,[CalendarYear] FROM [Action].[dbo].[promo_return] чтобы получить уникальные группы, я делаю так SELECT [CustomerName] ,[ItemRelation] ,[DocumentNum] ,[CalendarYear] ,[CustomerType] ,Count(*) as cnt FROM [Action].[dbo].[promo_return] GROUP BY [CustomerName] ,[ItemRelation] ,[DocumentNum] ,[CalendarYear] ,[CustomerType] ==== следующая таблица SELECT [CustomerName] ,[ItemRelation] ,[DocumentNum] ,[CalendarYear] ,[CustomerType] ,[k] ,[m0] ,[x] ,[coef] ,[ActionEffect] ,[ActionSales] ,[SalesBefore] FROM [Action].[dbo].[promo_effect1] количество также считаем Count(*) as cnt and GROUP BY === следующая таблица SELECT [ItemRelation] ,[DocumentNum] ,[CalendarYear] ,[CustomerName] ,[CustomerType] ,[Return] FROM [Action].[dbo].[returneff] количество рассчитывается Count(*) as cnt and GROUP BY и последняя таблица SELECT [Dt] ,[CustomerName] ,[ItemRelation] ,[ProductName] ,[SaleCount] ,[DocumentNum] ,[DocumentDate] ,[IsPromo] ,[CustomerType] ,[CalendarYear] FROM [Action].[dbo].[promo_data] количество групп расчитывается таким же образом Count(*) as cnt and GROUP BY SELECT [CustomerName] ,[ItemRelation] ,[DocumentNum] ,[CalendarYear] ,[CustomerType] ,Count(*) as cnt FROM [Action].[dbo].[promo_data] GROUP BY [CustomerName] ,[ItemRelation] ,[DocumentNum] ,[CalendarYear] ,[CustomerType] все эти таблицы должны иметь одинаковое число групп [CustomerName]+[ItemRelation]+[DocumentNum]+[CalendarYear]+[CustomerType]





предположим, число уникальных групп = 9658 во всех этих таблицах.

Как сделать, чтобы все таблицы были перепроверены друг с другом на количество уникальных групп?

и если между одной или всеми таблицами существует различное количество уникальных групп, тогда должно быть окно с предупреждением

что таблицы отличаются от уникальной группы.

я решил пойти легким путем

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
; with cte1 as
(
  SELECT [CustomerName],[ItemRelation],[DocumentNum],[CalendarYear],[CustomerType],Count(*) as cnt
  FROM [Action].[dbo].[promo_return]
  GROUP BY [CustomerName],[ItemRelation],[DocumentNum],[CalendarYear],[CustomerType]
) ,
cte2 as 
(
  SELECT  [CustomerName],[ItemRelation],[DocumentNum],[CalendarYear],[CustomerType],Count(*) as cnt
  FROM [Action].[dbo].[promo_effect1]
  GROUP BY[CustomerName],[ItemRelation],[DocumentNum],[CalendarYear],[CustomerType]
) ,
cte3 as 
(
  SELECT  [CustomerName],[ItemRelation],[DocumentNum],[CalendarYear],[CustomerType],Count(*) as cnt
  FROM [Action].[dbo].[returneff]
  GROUP BY[CustomerName],[ItemRelation],[DocumentNum],[CalendarYear],[CustomerType]
),
cte4 as 
(
  SELECT  [CustomerName],[ItemRelation],[DocumentNum],[CalendarYear],[CustomerType],Count(*) as cnt
  FROM [Action].[dbo].[promo_data]
  GROUP BY[CustomerName],[ItemRelation],[DocumentNum],[CalendarYear],[CustomerType]
)
select a.[CustomerName],a.[ItemRelation],a.[DocumentNum],a.[CalendarYear],a.[CustomerType],
case when a.cnt=b.cnt and a.cnt=c.cnt and a.cnt=d.cnt then  'tables have the same  of unique group'
else 'tables have different of unique group' end 
from cte1 a 
join cte2 b on a.[CustomerName]=b.[CustomerName] and a.[ItemRelation]=b.[ItemRelation] and a.[DocumentNum]=b.[DocumentNum] and a.[CalendarYear]=b.[CalendarYear] and a.[CustomerType]=b.[CustomerType]
join cte3 c on a.[CustomerName]=c.[CustomerName] and a.[ItemRelation]=c.[ItemRelation] and a.[DocumentNum]=c.[DocumentNum] and a.[CalendarYear]=c.[CalendarYear] and a.[CustomerType]=c.[CustomerType]
join cte4 d on a.[CustomerName]=d.[CustomerName] and a.[ItemRelation]=d.[ItemRelation] and a.[DocumentNum]=d.[DocumentNum] and a.[CalendarYear]=d.[CalendarYear] and a.[CustomerType]=d.[CustomerType]



по идеи мне должно вернуться 9658 групп, но
1. мне возвращается 3414
2. все помечены как tables have different of unique group чего не может быть по определению
там точно одинаковое количество групп, ручная проверка.
Более того
не может быть, чтобы было везде 9658 групп, но разных
например в одной таблице 9658 групп и есть группа
1+2+4+5+6
в другой тоже, но там
2+3+4+8+9, но нет 1+2+4+5+6
Количество везде одинаковое и название групп тоже везде одно и тоже

Как мне правильно составить запрос для проверки одинаковости количества групп в этих табличках?
...
Рейтинг: 0 / 0
межгрупповая проверка количества уникальных групп в sql
    #39710418
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kontox
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
SELECT TOP  [Dt]
      ,[CustomerName]
      ,[ItemRelation]
      ,[ProductName]
      ,[ReturnCount]
      ,[DocumentNum]
      ,[DocumentDate]
      ,[IsPromo]
      ,[CustomerType]
      ,[CalendarYear]
  FROM [Action].[dbo].[promo_return]

чтобы получить уникальные группы, я делаю так

  SELECT [CustomerName]
      ,[ItemRelation]
      ,[DocumentNum]
      ,[CalendarYear]
      ,[CustomerType]
      ,Count(*) as cnt
  FROM [Action].[dbo].[promo_return]


Не понимаю ваших терминов. Что такое "группы"?

Вторым запросом вы получаете количество записей для каждого кастомера (скажем, количество документов, или продуктов, или ещё чего то, что записывается в эту таблицу)

Для других таблиц вы тоже получаете количество записей для каждого кастомера (но записи там другие, ведь таблицы-то разные)

Итоговый запрос показывает, разное или одинаковое, количество записей для каждого кастомера в этих таблицах.
Kontoxпо идеи мне должно вернуться 9658 групп, ноЭээ, вы имеете в виду, запрос должен вернуть 9658 записей?

Ну, в первой таблице 9658 кастомеров, во второй ещё сколько то.

Ваш запрос возвращает столько записей, сколько одинаковых кастомеров во всех этих таблицах.
...
Рейтинг: 0 / 0
межгрупповая проверка количества уникальных групп в sql
    #39710513
Kontox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
SELECT TOP  [Dt]
      ,[CustomerName]
      ,[ItemRelation]
      ,[ProductName]
      ,[ReturnCount]
      ,[DocumentNum]
      ,[DocumentDate]
      ,[IsPromo]
      ,[CustomerType]
      ,[CalendarYear]
  FROM [Action].[dbo].[promo_return]
тут  655002 записи

чтобы получить уникальные группы, я делаю так

  SELECT [CustomerName]
      ,[ItemRelation]
      ,[DocumentNum]
      ,[CalendarYear]
      ,[CustomerType]
      ,Count(*) as cnt
  FROM [Action].[dbo].[promo_return]


тут
вот пример групп, уникальных


во всех таблицах этот дистинк групп SELECT [CustomerName]
,[ItemRelation]
,[DocumentNum]
,[CalendarYear]
,[CustomerType]
,Count(*) as cnt

одинаковый

но почему возвращается3414 записи


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


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