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

Откуда: Москва
Сообщений: 799
SELECT COUNT(*)
FROM [Служебная]
GROUP BY [№товара], Nтпд, Ед, [№заказчика], [Площадка], Габариты
6 май 14, 14:18    [15979986]     Ответить | Цитировать Сообщить модератору
 Re: загадка или у меня уже крыша съехала  [new]
Glory
Member

Откуда:
Сообщений: 104760
Варианты
1. Ошибка - в 17ой строке
2. 42
6 май 14, 14:20    [15980002]     Ответить | Цитировать Сообщить модератору
 Re: загадка или у меня уже крыша съехала  [new]
garvy
Member

Откуда: Москва
Сообщений: 799
сорри не ту кнопку нажал. Запрос возвращает число 2, а запрос
SELECT [№товара], Nтпд, Ед, [№заказчика], [Площадка], Габариты FROM [Служебная]
GROUP BY [№товара], Nтпд, Ед, [№заказчика], [Площадка], Габариты
возвращает одну строчку Что за загадка?
В исходной таблице всего 2 строки.
6 май 14, 14:20    [15980005]     Ответить | Цитировать Сообщить модератору
 Re: загадка или у меня уже крыша съехала  [new]
Glory
Member

Откуда:
Сообщений: 104760
garvy
запрос
SELECT [№товара], Nтпд, Ед, [№заказчика], [Площадка], Габариты FROM [Служебная]
GROUP BY [№товара], Nтпд, Ед, [№заказчика], [Площадка], Габариты
возвращает одну строчку Что за загадка?

Из 2х одинаковых строк прии группировке получится 1 строка
6 май 14, 14:22    [15980024]     Ответить | Цитировать Сообщить модератору
 Re: загадка или у меня уже крыша съехала  [new]
group by
Guest
а в чем проблема?


у вас в таблице две записи с одинаковыми значениями полей [№товара], Nтпд, Ед, [№заказчика], [Площадка], Габариты
6 май 14, 14:23    [15980029]     Ответить | Цитировать Сообщить модератору
 Re: загадка или у меня уже крыша съехала  [new]
iap
Member

Откуда: Москва
Сообщений: 47049
garvy,

можете считать, что и в этом последнем случае тоже посчиталось COUNT(*),
просто в результат не попало, ибо не указано в списке SELECTа
6 май 14, 15:29    [15980591]     Ответить | Цитировать Сообщить модератору
 Re: загадка или у меня уже крыша съехала  [new]
garvy
Member

Откуда: Москва
Сообщений: 799
Дык на сколько я понимаю COUNT(*) возвращает число строк в запросе - должно быть 1 а не 2 - вот это не понятно
6 май 14, 15:46    [15980757]     Ответить | Цитировать Сообщить модератору
 Re: загадка или у меня уже крыша съехала  [new]
Glory
Member

Откуда:
Сообщений: 104760
garvy
Дык на сколько я понимаю COUNT(*) возвращает число строк в запросе

Вы неправильно понимаете
6 май 14, 15:46    [15980767]     Ответить | Цитировать Сообщить модератору
 Re: загадка или у меня уже крыша съехала  [new]
garvy
Member

Откуда: Москва
Сообщений: 799
Да, не понимаю. Надо разобраться. Вот определение из BOL " Возвращает количество элементов в группе.... Функция COUNT(*) возвращает количество строк в указанной таблице, не отбрасывая дублированные строки. Подсчитывает каждую строку отдельно. При этом учитываются и строки, содержащие значения NULL".В моем случае 1 элемент - это собственно сгруппированная строка данных. Что такое этот 2-й элемент?
7 май 14, 09:24    [15983668]     Ответить | Цитировать Сообщить модератору
 Re: загадка или у меня уже крыша съехала  [new]
garvy
Member

Откуда: Москва
Сообщений: 799
Получается, что "возвращает .. в указанной таблице" следует понимать буквально? И тогда действительно - в исходной таблице 2 строки. Тогда здесь нарушение какое-то общей логики, к которой привык в SQL: что-то там делается над данными, после чего имеем выход чего-нибудь с учетом уже переработанных данных. В данном случае COUNT(*) пилюет на наличие GROUP BY?
7 май 14, 09:29    [15983686]     Ответить | Цитировать Сообщить модератору
 Re: загадка или у меня уже крыша съехала  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10234
Блог
declare @t table ( a char )
insert into @t
values ('a'),('a'),('a'),('b'),('b')

select a, count(*) cnt from @t
group by a

/*
a    cnt
---- -----------
a    3
b    2
*/
7 май 14, 09:31    [15983695]     Ответить | Цитировать Сообщить модератору
 Re: загадка или у меня уже крыша съехала  [new]
prog882
Guest
garvy,
SELECT COUNT(*) FROM (
SELECT [№товара], Nтпд, Ед, [№заказчика], [Площадка], Габариты 
FROM [Служебная]
GROUP BY [№товара], Nтпд, Ед, [№заказчика], [Площадка], Габариты ) T
7 май 14, 09:39    [15983726]     Ответить | Цитировать Сообщить модератору
 Re: загадка или у меня уже крыша съехала  [new]
garvy
Member

Откуда: Москва
Сообщений: 799
Да, теперь разобрался. Спасибо всем. Хотя если честно - большое откровение для меня! С языком SQL знаком и плотно сотрудничаю уже лет 15 как! Вот так: век живи - век учись.
7 май 14, 09:45    [15983761]     Ответить | Цитировать Сообщить модератору
 Re: загадка или у меня уже крыша съехала  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10234
Блог
garvy
Хотя если честно - большое откровение для меня! С языком SQL знаком и плотно сотрудничаю уже лет 15 как!


это в самых первых главах самых простеньких учебниках по любому SQL...основы так сказать...
7 май 14, 09:57    [15983820]     Ответить | Цитировать Сообщить модератору
 Re: загадка или у меня уже крыша съехала  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8317
Существует даже такая штука как count(distinct field1).
7 май 14, 12:01    [15984614]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить