Имеется запрос вида:
SELECT
measuring.pin_name AS pin_name,
AVG(measuring.meas) AS meas,
COUNT(measuring.meas) AS counts
FROM
measuring,
list_ims,
test_name,
test_variant,
party_ims
WHERE
(
measuring.id_test_variant = test_variant.id AND test_variant.id_test_name = test_name.id
) AND(
measuring.id_party = party_ims.id AND party_ims.id = list_ims.id
) AND list_ims.name = '1533ИР39' AND test_name.name = 'Выходное напряжение высокого уровня UOH, В'
GROUP BY
`pin_name`
ORDER BY
`measuring`.`pin_name` ASC
На выходе возвращается список вида
pin_name 1 | среднее | количество сущностей с pin_name 1
pin_name 2 | среднее | количество сущностей с pin_name 2
pin_name 3 | среднее | количество сущностей с pin_name 3
В последствии средствами python
считается количество pin_name, после этого среднее каждой сущности сравнивается с пользовательским числом и проверяется если новое количество pin_name осталось прежним, то всё круто, добавляю головной элемент (тот, у кого были все эти pin_name
в массив на вывод пользователю), но при этом надо также посчитать количество pin_name
у которых значение (уже не среднее) больше/меньше пользовательского значения.
Сейчас делаю это через два запроса.
Есть ли вариант ещё в исходном считать это сразу?
То есть, к примеру пользователь ввёл <=5.0
На выходе запроса получить:
pin_name 1 | среднее | количество сущностей с pin_name 1 <=5.0 | true или false
pin_name 2 | среднее | количество сущностей с pin_name 2 <=5.0 | true или false
Где true - среднее <=5.0, false - обратное
.
В более общем случае, для различных СУБД подобное пишут с использованием оператора case
и агрегатной функции суммирования:
select sum(case when meas < 5 then 1 else 0 end)
Для диалекта mysql можно более кратко записать как
select sum(IF(meas < 5, 1, 0))
И поскольку у нас тут либо 0 либо 1, то и вовсе сократить до
select sum( meas < 5)
Схожим образом можно оформить и решение для последнего вашего столбца
select ( avg(meas) < 5 ) as truefalse
Так что ваш запрос дополнится такими строками
SELECT
measuring.pin_name AS pin_name,
AVG(measuring.meas) AS meas,
COUNT(measuring.meas) AS counts,
SUM(measuring.meas < 5) as c_lt5,
(AVG(measuring.meas) < 5) as truefalse
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Есть приложение написанное через Spring MVC,Spring JDBCНеобходимо добавлять дату в БД(MYSQL)
Вот здесь колонка (блок) "Балансировка" почему-то уходит вправо, хотя у всех этих блоков стоит float: left;Как сместить ее влево, где она и должна...
Имеется такая проблема при компиляции pugХоть она не так критична технически, но визуально довольно неприятна