Помощь с количеством запросов SQL

#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-запроса?