#mysql #sql
#mysql #sql
Вопрос:
У меня есть таблица, похожая на следующую
ID NUMBER
VAL1 NUMBER
VAL2 NUMBER
Мне нужен SQL-запрос, который отображает количество строк, имеющих VAL1> VAL2, и количество строк, имеющих VAL1 < VAL2. Оба подсчитываются с использованием одного SQL-запроса. Спасибо.
Ответ №1:
Этот запрос должен работать с большинством платформ баз данных:
select sum(case when val1 > val2 then 1 end) as GreaterThanCount,
sum(case when val1 < val2 then 1 end) as LessThanCount
from MyTable
Чтобы отобразить суммы в отдельных строках, вы можете сделать:
select case when val1 > val2 then 'GreaterThan' else 'LessThan' end as Type,
count(*) as Count
from MyTable
group by case when val1 > val2 then 'GreaterThan' else 'LessThan' end
Комментарии:
1. Возможно ли отобразить подсчеты в двух разных строках с помощью одного и того же SQL-запроса?
2. Обратите внимание, что строки, где val1 = val2, попадают в корзину «LessThan» здесь.
Ответ №2:
ВЫБЕРИТЕ SUM(VAL1 > VAL2) в качестве arg1, SUM(VAL1 < VAL2) в качестве arg2
Комментарии:
1. Возможно ли отобразить подсчеты в двух разных строках с помощью одного и того же SQL-запроса?
Ответ №3:
Попробуйте это:
select id, count(VAL1 > VAL2) as more1, count(val2 > val1) as more2
from your_table
Комментарии:
1. Возможно ли отобразить подсчеты в двух разных строках с помощью одного и того же SQL-запроса?