Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

MYSQL COUNT

1.8K
11 октября 2011 года
Kama
153 / / 04.05.2006
Здравствуйте,
у меня такой вопрос, надо подсчитать только те записи в которых отсутствует значение "0" (ноль).

примерно следующее

SELECT COUNT( IF(columna != 0)) FROM TABLEA;

заранее спасибо
4
11 октября 2011 года
mike
3.7K / / 01.10.2002
Цитата: Kama
Здравствуйте,
у меня такой вопрос, надо подсчитать только те записи в которых отсутствует значение "0" (ноль).

примерно следующее

SELECT COUNT( IF(columna != 0)) FROM TABLEA;

заранее спасибо



Стоит почитать про основы SQL: http://www.codenet.ru/cat/Applications/Database/SQL/

 
Код:
SELECT COUNT(*) FROM TABLEA WHERE columna!=0;
1.8K
13 октября 2011 года
Kama
153 / / 04.05.2006
ну да с этим понятно вообще-то, меня интересует тот случай когда нужно выбрать несколько колонок из таблиц еще с JOIN'ами. Суть вопроса в том как пользоваться условным COUNT'ом.
13
13 октября 2011 года
RussianSpy
3.0K / / 04.07.2006
Конретизируйте проблему
COUNT считает количество строк в результате выполнения подзапроса
если используются джойны, то можно, например, все обернуть в подзапрос
385
14 октября 2011 года
SomewherSomehow
477 / / 25.07.2004
Kama,

посчитать кол-во значений в столбце не равных 0
раз
 
Код:
select sum(case when MyColumn = 0 then 0 else 1 end) from MyTable
два
 
Код:
select count(nullif(MyColumn,0)) from MyTable

п.с.
только в синтаксисе мог налажать, ибо уже не помню как там в mySQL
13
14 октября 2011 года
RussianSpy
3.0K / / 04.07.2006
Чем это отличается от
 
Код:
SELECT COUNT(*) FROM table1 WHERE colomn1<>0

???
1.8K
14 октября 2011 года
Kama
153 / / 04.05.2006
Цитата: SomewherSomehow
Kama,

посчитать кол-во значений в столбце не равных 0
раз
 
Код:
select sum(case when MyColumn = 0 then 0 else 1 end) from MyTable

п.с.
только в синтаксисе мог налажать, ибо уже не помню как там в mySQL



золотой запрос, не знал..., но пару раз в нете "натыкался" сейчас логику вроде понял, спасибо большое всем за участие

В моем случае это тот запрос который мне нужен

385
17 октября 2011 года
SomewherSomehow
477 / / 25.07.2004
Цитата: RussianSpy
Чем это отличается от
 
Код:
SELECT COUNT(*) FROM table1 WHERE colomn1<>0

???


Конкретно в такой форме - ничем впринципе. Отличия начинаются, если это часть более сложного запроса, в котором требуется обработать все записи, даже те, где colomn1 = 0, но при этом в счетчике нужно учитывать только ненулевые.

10
17 октября 2011 года
Freeman
3.2K / / 06.03.2004
Цитата: SomewherSomehow
Конкретно в такой форме - ничем впринципе.


Запросы неэквивалентны, если colomn1 может быть null. Не уверен насчёт MySQL.

385
18 октября 2011 года
SomewherSomehow
477 / / 25.07.2004
Цитата: Freeman
Запросы неэквивалентны, если colomn1 может быть null. Не уверен насчёт MySQL.



Да, насчет нулл полностью согласен, неточно выразился. В конце концов, если известно что колонка nullable, можно просто добавить MyColumn is null или еще как нулл обработать - и разницы в результатх снова не будет. Однако эквивалентны запросы все равно не будут, хотя бы потому что в одном случае может быть использован индекс, а в другом нет. Я это понимаю и не говорю про эквивалентность, имелась ввиду принципиальная разница полученного результата. Она появляется когда начинает иметь значение на каком этапе мы учитываем ненулевые значения, отсеиваем ли мы их вовсе, или просто учитываем при выводе - вот о чем я.

Знаете кого-то, кто может ответить? Поделитесь с ним ссылкой.

Ваш ответ

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог