Нахождение среднего числа против идентификатора на SQL сервере - PullRequest
0 голосов
/ 16 апреля 2020

Предположим, есть две таблицы, Customer и Limit.

Customer имеет следующие столбцы:

CustomerId (PK)
Name

И Limit имеет эти столбцы:

LimitId (PK)
Limitvalue
CustomerId (FK)

Это мой пример данных:

Клиент

CustomerId    Name
----------------------
    1         xyz
    2         abc
    3         uio

Предел

LimitValue     CustomerId
-------------------------
  35303000         1
         0         1
         3         1
         0         2
 225140000         2
         3         2

Теперь, когда я запускаю этот запрос

select a.Limitvalue, b.CustomerId 
from limit a
left join Customer b on a.CustomerId = b.CustomerId

Он будет возвращать такие данные:

data

Здесь первый столбец является предельным значением, а второй - customerid. Как вы можете видеть, существует несколько предельных значений для одного пользователя. Я хочу написать запрос, который показывает мне среднее значение всех предельных значений для их конкретного идентификатора.

Я попытался добавить функцию avg. Левое соединение здесь должно работать, но оно не работает. Кто-нибудь может мне помочь, предоставив пример данных, похожих на этот, и написав запрос, чтобы я мог понять концепцию? Я был бы очень благодарен.

1 Ответ

1 голос
/ 16 апреля 2020

group by b.CustomerId

Это, нет?

Вам необходимо указать c, как должна работать база данных, поэтому вы сказали, чтобы она составляла среднее значение группировка по "если у вас нет базы данных, попробуйте сделать AVG на полную таблицу

SQL Fiddle

MS SQL Настройка схемы сервера 2017 :

Результаты :

| CustomerId | Name |
|------------|------|
|          1 |  bob |
|          2 | jean |

Результаты :

| LimitId | Limitvalue | CustomerId |
|---------|------------|------------|
|       1 |          0 |          1 |
|       2 |         10 |          1 |
|       3 |        100 |          2 |

Запрос 3 :

select 
  avg(a.Limitvalue),
  b.CustomerId 
from limit a
left join Customer b 
  on a.CustomerId= b.CustomerId
group by b.CustomerId

Результаты :

|     | CustomerId |
|-----|------------|
|   5 |          1 |
| 100 |          2 |
...