powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Подсчет значений
5 сообщений из 5, страница 1 из 1
Подсчет значений
    #39883917
Marklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Допустим, есть 2 колонки, CustomerID и BroughtByCustomerID, т.е. ID покупателя и ID того, кем он был приведен
CustomerIDBroughtByCustomerID1null21314254617null8394102
как написать запрос, подсчитывающий сколько покупателей привел этот покупатель?
CustomerIDBroughtCustomers132231425060708090100
...
Рейтинг: 0 / 0
Подсчет значений
    #39883918
londinium
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как-то так
Код: 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.
USE master
GO

WITH CTE(CUSTOMERID,BroughtByCustomerID) AS
(
  SELECT 1,NULL
    UNION ALL
  SELECT 2,1
    UNION ALL
  SELECT 3,1
    UNION ALL
  SELECT 4,2
    UNION ALL
  SELECT 5,4
    UNION ALL
  SELECT 6,1
    UNION ALL
  SELECT 7,NULL
    UNION ALL
  SELECT 8,3
    UNION ALL
  SELECT 9,4
    UNION ALL
  SELECT 10,2            
          
),
COUNTBROUGHT AS
(
  SELECT C.BroughtByCustomerID,COUNT(C.BroughtByCustomerID)CNT
  FROM CTE AS C
  GROUP BY C.BroughtByCustomerID
)
SELECT C.CUSTOMERID,ISNULL(BROUGHT.CNT,0)AS COUNTR
FROM CTE AS C
LEFT JOIN COUNTBROUGHT AS BROUGHT ON C.CUSTOMERID=BROUGHT.BroughtByCustomerID
...
Рейтинг: 0 / 0
Подсчет значений
    #39883921
Андрей Юниор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Начать с этого:
Код: sql
1.
2.
3.
4.
select BroughtByCustomerID as CustomerID, count(CustomerID) as cnt_BroughtByCustomerID
from table
where BroughtByCustomerID is not null
group BroughtByCustomerID


В принципе готово, но если нужно нужно ещё нули подставить тем CustomerID, которые никого не привели, то можно ещё что-нибудь добавить любым удобным способом.


londinium
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
WITH CTE(CUSTOMERID,BroughtByCustomerID) AS
(
  SELECT 1,NULL
    UNION ALL
  SELECT 2,1
    UNION ALL
  SELECT 3,1
    UNION ALL
  SELECT 4,2
    UNION ALL
  SELECT 5,4
    UNION ALL
  SELECT 6,1
    UNION ALL
  SELECT 7,NULL
    UNION ALL
  SELECT 8,3
    UNION ALL
  SELECT 9,4
    UNION ALL
  SELECT 10,2            
          
),


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


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