powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / как посчитать двойное вложение условий?
12 сообщений из 12, страница 1 из 1
как посчитать двойное вложение условий?
    #39402985
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
с одинарным вложением понятно:
Код: sql
1.
2.
3.
4.
5.
SELECT
    COUNT(CASE WHEN `col1`=1 THEN 1 END) AS totals1,
    COUNT(CASE WHEN `col2`=1 THEN 1 END ) AS totals2,
    COUNT(CASE WHEN `col3`=1 THEN 1 END ) AS totals3
FROM `table`;



но вот например появляется ещё одна колонка с отдельным общий значением - `on`=1/0 (включено/выключено)
и мне нужно посчитать раздельно `totals1_on` и `totals1_off`
остаётся только WHEN `on`=1 AND `col1`=1
или ещё как-то можно?
если бы только можно было:
Код: sql
1.
THEN IF(`on`=1,AS `totals1_on`,AS `totals1_off`)


но нельзя (
...
Рейтинг: 0 / 0
как посчитать двойное вложение условий?
    #39402987
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Никаких вложений условий тут нет, это суперпозиция условий, НАложение.
Но это лирика.

Очевидно же, что при таком подходе нужно писать более сложные условия в CASE-выражении,
и расписывать таким образом все возможные нужные сочетания этих условий.

Или ты про логические операции AND/OR/NOT ничего не знаешь ?
...
Рейтинг: 0 / 0
как посчитать двойное вложение условий?
    #39402993
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivИли ты про логические операции AND/OR/NOT ничего не знаешь ?
а это что
авторостаётся только WHEN `on`=1 AND `col1`=1
...
Рейтинг: 0 / 0
как посчитать двойное вложение условий?
    #39402996
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так а чего ты тогда спрашиваешь ?
...
Рейтинг: 0 / 0
как посчитать двойное вложение условий?
    #39402997
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
может и очевидно, но где-то в воздухе крутится более элегантное решение...
пока сделал так:
(SELECT
COUNT(CASE WHEN `col1`=1 THEN 1 END) AS `total1`,
COUNT(CASE WHEN `col2`=1 THEN 1 END) AS `total2`,
COUNT(CASE WHEN `col3`=1 THEN 1 END) AS `total3`
FROM `table` WHERE `on`=1)
UNION ALL
(SELECT
COUNT(CASE WHEN `col1`=1 THEN 1 END) AS `total1`,
COUNT(CASE WHEN `col2`=1 THEN 1 END) AS `total2`,
COUNT(CASE WHEN `col3`=1 THEN 1 END) AS `total3`
FROM `table` WHERE `on`=0)
...
Рейтинг: 0 / 0
как посчитать двойное вложение условий?
    #39403099
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tip78,

Код: sql
1.
COUNT(CASE WHEN `col1`=1 THEN 1 END)

Это можно записать чуть короче:
Код: sql
1.
SUM(`col1`=1)



Если поле `on` не имеет других значений, то можно так:
Код: sql
1.
2.
3.
4.
5.
6.
7.
SELECT
  `on`
  SUM(`col1`=1)  AS `total1`,
  SUM(`col2`=1)  AS `total2`,
  SUM(`col3`=1)  AS `total3`
FROM `table`
GROUP BY `on`


Если поле `on` имеет другие значения, но они не нужны в этом запросе, то отфильтровать секцией WHERE.
...
Рейтинг: 0 / 0
как посчитать двойное вложение условий?
    #39403174
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
во, от вас всегда самые дельные решения
спасибо!
...
Рейтинг: 0 / 0
как посчитать двойное вложение условий?
    #39403188
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это только в MySQL так можно делать из-за нестандартный интерпретации выражений как
булевых величин.

Я бы ни за что так не писал даже в mySQL, потому что никто не знает, как это работает, и как будет работать завтра.
...
Рейтинг: 0 / 0
как посчитать двойное вложение условий?
    #39403193
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivникто не знает, как это работаетВы походу единственный, кто НЕ знает, что при сравнении в качестве TRUE возвращается единица, а в качестве FALSE - ноль... и это явно описано в документации...
Comparison operations result in a value of 1 (TRUE), 0 (FALSE), or NULL.
...
Рейтинг: 0 / 0
как посчитать двойное вложение условий?
    #39403245
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina,
еще раз, я это знаю и я об этом написал .
как написал, что эта фича есть только в мускуле.
...
Рейтинг: 0 / 0
как посчитать двойное вложение условий?
    #39403416
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
это потому что булев тип нельзя напечатать, он как бы эфемерен
поэтому печатают -1/0/1
в пхп,perl,JS,bash и ещё чёрт знает где
проги возвращают статусы цифрами тоже
но через строгое соответствие === можно ловить и були
https://ru.wikipedia.org/wiki/Логический_тип
...
Рейтинг: 0 / 0
как посчитать двойное вложение условий?
    #39403495
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivэта фича есть только в мускулеНу так и форум как бы специфичецкий...
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / как посчитать двойное вложение условий?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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