Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Кто черепит в SQL, помогите чайнику / 6 сообщений из 6, страница 1 из 1
06.04.2004, 11:29
    #32470230
guest
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кто черепит в SQL, помогите чайнику
Ситуация следующая:
Предположим сижу перед окном и считаю машины - Запоры, Мерсы. Жигули, Волги и т.д. (на самом деле все марки из справочника). Интересует состояние - мытая машина(.T.) или не мытая (.F.). Так вот как SELECT'ом выбрать все машины за сутки, сгруппировав их по маркам и ,главное, чтобы по каждой группе(марке машины) было число мытых машин, т.е.
Марки Количество за сутки Мытых
Волги ....................5......................3
Жигули..................7......................0
Запоры..................3......................3

Заранее Спасибо.
...
Рейтинг: 0 / 0
06.04.2004, 12:43
    #32470413
1
1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кто черепит в SQL, помогите чайнику
Может так?

SELECT
Марка ,
COUNT(*) ,
(
SELECT
COUNT(*)
FROM
Машины м2
WHERE
м2.Мытые = FALSE AND
м2.Марка = м1.Марка
)
FROM
Машины м1
GROUP BY
Марка

Или с группой подзапрос не пройдет?
...
Рейтинг: 0 / 0
06.04.2004, 12:58
    #32470443
guest
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кто черепит в SQL, помогите чайнику
на forum.foxclub.ru ответили:
select Марки, count(Марки) as Кол_во,sum(iif(Мытая,1,0) as Мытые
from Табла_Мытых_И_Не_Мытых_Машин group by Марки
Проверил - работает!
...
Рейтинг: 0 / 0
06.04.2004, 14:40
    #32470652
guest
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кто черепит в SQL, помогите чайнику
В догонку вопрос.
select Марки, count(Марки) as Кол_во,sum(iif(Мытая,1,0) as Мытые
from Табла_Мытых_И_Не_Мытых_Машин group by Марки
В чём разница между count(Марки) и count(*) - результат-то одинаковый!
...
Рейтинг: 0 / 0
06.04.2004, 14:59
    #32470694
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кто черепит в SQL, помогите чайнику
В данном случае - никакой. Однако есть разница.

COUNT(*) возвращает количество в итоговой выборке вне зависимости от содержимого записей. Просто сколько записей есть.
COUNT(MyField) возвращает количество среди записей где есть значение поля MyField.

Т.е. при использовании COUNT(MyField) исключаются записи имеющие значение поля MyField=NULL

Пример:

Код: plaintext
1.
2.
3.
4.
CREATE CURSOR test (f1 I NULL)
INSERT INTO test VALUES (NULL)
INSERT INTO test VALUES ( 1 )

SELECT COUNT(*), COUNT(f1) FROM test


Почувствуйте разницу!

Обычно такой подсчет используется при объединении таблиц по LEFT, RIGHT или FULL JOIN для подсчета количества в подчиненной таблице.
...
Рейтинг: 0 / 0
06.04.2004, 15:28
    #32470772
guest
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кто черепит в SQL, помогите чайнику
Благодарю!
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Кто черепит в SQL, помогите чайнику / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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