Задать вопрос
@andrey71
админю и учу C#, ASP.NET Core

Как сделать два селекта и вычисления в одном запросе?

Добрый день, Друзья!

Подскажите, возможна ли такая конструкция в одном запросе:
мне необходимо сосчитать все строки значением больше 1 в поле КОД , разделить их количество на 2 (оно всегда четное) и сложить их со всеми строками с 0 в поле КОД.
В результате запроса должно получится число 1 или 2 или 3 и тд.

Пишу такую конструкцию:
SELECT COUNT(*) FROM `work` WHERE `date_in` BETWEEN (SELECT UNIX_TIMESTAMP(NOW())+ 10740 SECOND) AND (SELECT UNIX_TIMESTAMP(NOW())+ 10800 SECOND) AND `kod`=0 + (SELECT COUNT(*) FROM `work` WHERE `date_in` BETWEEN (SELECT UNIX_TIMESTAMP(NOW())+ 10740 SECOND) AND (SELECT UNIX_TIMESTAMP(NOW())+ 10800 SECOND)) AND `kod`>1 )/2);


Но SQLyog ругается на синтаксис...
Возможно ли вообще составить такой запрос?

UPD: C делением разобрался
SELECT COUNT(*)/2 FROM `work`......
  • Вопрос задан
  • 4187 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 1
@andrey71 Автор вопроса
админю и учу C#, ASP.NET Core
Всё оказалось проще, чем я думал:
SELECT(
(SELECT COUNT(1) FROM `work` WHERE `date_in` BETWEEN (SELECT UNIX_TIMESTAMP(NOW())+ 10740 SECOND) AND (SELECT UNIX_TIMESTAMP(NOW())+ 10800 SECOND) AND `kod`=0)
+
(SELECT COUNT(1)/2 FROM `work` WHERE `date_in` BETWEEN (SELECT UNIX_TIMESTAMP(NOW())+ 10740 SECOND) AND (SELECT UNIX_TIMESTAMP(NOW())+ 10800 SECOND) AND `kod`>1)) AS tehn;


Может кому пригодиться.
До решения дошел не сам. Подсказал друг. Ромыч, спасибо тебе!
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
MaxDukov
@MaxDukov
впишусь в проект как SRE/DevOps.
может так?
SELECT SUM(1) FROM (
SELECT COUNT(*)/2 FROM `work` WHERE `date_in` BETWEEN (SELECT UNIX_TIMESTAMP(NOW())+ 10740 SECOND) AND (SELECT UNIX_TIMESTAMP(NOW())+ 10800 SECOND) AND `kod`=0 
 UNION
(SELECT COUNT(*) FROM `work` WHERE `date_in` BETWEEN (SELECT UNIX_TIMESTAMP(NOW())+ 10740 SECOND) AND (SELECT UNIX_TIMESTAMP(NOW())+ 10800 SECOND)) AND `kod`>1 ))
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы