Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Домашнее задание по SQL  [new]
Nickusss
Member

Откуда:
Сообщений: 4
В microsoft sql требуется создать запрос по которому нужно вывести членов клуба и количество их авто.
Пример таблицы таков: марка машины, год выпуска, Id клиента, который в свою очередь связан с другой таблицей в которой ID клиента есть ключ, и поля типа имени отчества. Разные машины имеют иногда одинаковые ID Клиентов, т.е. клиент может иметь Honda в одной записи в другой BMW. Как посчитать количество авто по уникальным ID ?
Понимаю что нужно сделать COUNT (IdCLient), но почему то выдает общее кол-во записей, даже если они повторяются. Не судите строго только начали проходить SQL. Буду благодарен за помощь
23 окт 17, 16:38    [20893126]     Ответить | Цитировать Сообщить модератору
 Re: Домашнее задание по SQL  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36989
Рекомендации, пункт 4 и пункт 6.
23 окт 17, 16:40    [20893132]     Ответить | Цитировать Сообщить модератору
 Re: Домашнее задание по SQL  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 20538
Nickusss
почему то выдает общее кол-во записей, даже если они повторяются
Наверное, DISTINCT нехватает... с другой стороны, может же человек в один и тот же год купить две машины одной и той же марки, верно? а данные не позволяют понять, дубликат записи имеется или две независимые, но идентичные, записи.
23 окт 17, 16:42    [20893139]     Ответить | Цитировать Сообщить модератору
 Re: Домашнее задание по SQL  [new]
Nickusss
Member

Откуда:
Сообщений: 4
автор
Наверное, DISTINCT нехватает... с другой стороны, может же человек в один и тот же год купить две машины одной и той же марки, верно? а данные не позволяют понять, дубликат записи имеется или две независимые, но идентичные, записи.
сейчас проверю) возможно и оно
23 окт 17, 16:46    [20893157]     Ответить | Цитировать Сообщить модератору
 Re: Домашнее задание по SQL  [new]
Nickusss
Member

Откуда:
Сообщений: 4
Akina,
Вопрос в другом сколько каждый клиент имеет машин вот задача.
типа чтобы выводило
клинет номер 2 имеет 4 машины
клиент номер 3 имеет 5 машин

чтобы считало если ID одинаковы значит 1 машина если еще раз в списке повторяется что значит еще одна
23 окт 17, 16:59    [20893210]     Ответить | Цитировать Сообщить модератору
 Re: Домашнее задание по SQL  [new]
felix_ff
Member

Откуда: Moscow
Сообщений: 1369
Nickusss,

вы покажите запрос который сумели сделать, а мы поправим.
23 окт 17, 18:22    [20893469]     Ответить | Цитировать Сообщить модератору
 Re: Домашнее задание по SQL  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7780
Nickusss,

Вы полагаете , что здесь бесплатные курсы для начинающих, что ли? Возьмите какой-нибудь учебник по MS SQL, обычно там все по полочкам о запросах и выражениях разложено.
23 окт 17, 18:22    [20893471]     Ответить | Цитировать Сообщить модератору
 Re: Домашнее задание по SQL  [new]
Nickusss
Member

Откуда:
Сообщений: 4
4 часа убил чтобы написать 4 строчки и все у одному знаменателю привести
select lidnaam, count(a.lidnr) as aantal
from autos as a
join leden as l on l.lidnr=a.lidnr
group by lidnaam
23 окт 17, 20:51    [20893861]     Ответить | Цитировать Сообщить модератору
 Re: Домашнее задание по SQL  [new]
982183
Member

Откуда: VL
Сообщений: 3353
Работает?
24 окт 17, 03:35    [20894373]     Ответить | Цитировать Сообщить модератору
 Re: Домашнее задание по SQL  [new]
Ролг Хупин
Member

Откуда: Чебаркуль
Сообщений: 3712
Nickusss
4 часа убил чтобы написать 4 строчки и все у одному знаменателю привести
select lidnaam, count(a.lidnr) as aantal
from autos as a
join leden as l on l.lidnr=a.lidnr
group by lidnaam


В следующий раз можно сэкономить время, писать так:

-- 2 часа
select lidnaam, count(a.lidnr) as aantal from autos as a
join leden as l on l.lidnr=a.lidnr group by lidnaam

-- 1 час
select lidnaam, count(a.lidnr) as aantal from autos as a join leden as l on l.lidnr=a.lidnr group by lidnaam

-- 30 минут
select lidnaam, count(a.lidnr) as aantal from autos as
24 окт 17, 08:51    [20894589]     Ответить | Цитировать Сообщить модератору
 Re: Домашнее задание по SQL  [new]
погроммист
Member

Откуда:
Сообщений: 213
Nickusss
4 часа убил чтобы написать 4 строчки и все у одному знаменателю привести
select lidnaam, count(a.lidnr) as aantal
from autos as a
join leden as l on l.lidnr=a.lidnr
group by lidnaam

должно работать, пока не появятся два члена клуба с одинаковым именем ))
Голландия?
24 окт 17, 10:09    [20894773]     Ответить | Цитировать Сообщить модератору
 Re: Домашнее задание по SQL  [new]
Ролг Хупин
Member

Откуда: Чебаркуль
Сообщений: 3712
погроммист
Nickusss
4 часа убил чтобы написать 4 строчки и все у одному знаменателю привести
select lidnaam, count(a.lidnr) as aantal
from autos as a
join leden as l on l.lidnr=a.lidnr
group by lidnaam

должно работать, пока не появятся два члена клуба с одинаковым именем ))
Голландия?


Улан-Удэ
24 окт 17, 10:52    [20894905]     Ответить | Цитировать Сообщить модератору
 Re: Домашнее задание по SQL  [new]
982183
Member

Откуда: VL
Сообщений: 3353
А зачем столько AS ?
Это стиль такой, или рекомендовал кто?
24 окт 17, 10:55    [20894914]     Ответить | Цитировать Сообщить модератору
 Re: Домашнее задание по SQL  [new]
Ролг Хупин
Member

Откуда: Чебаркуль
Сообщений: 3712
982183
А зачем столько AS ?
Это стиль такой, или рекомендовал кто?


ну, во-первых - это красиво (ц)
24 окт 17, 11:13    [20894989]     Ответить | Цитировать Сообщить модератору
 Re: Домашнее задание по SQL  [new]
982183
Member

Откуда: VL
Сообщений: 3353
А мне кажется, в данном случае, просто запутывает.

select lidnaam, count(a.lidnr) as aantal
from autos as a
join leden as l on l.lidnr=a.lidnr
group by lidnaam 



select lidnaam, count(autos.lidnr) as aantal
from autos join leden on leden.lidnr=autos.lidnr
group by lidnaam 
24 окт 17, 11:18    [20895006]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить