Sql-запрос для получения общего количества записей в таблице

#mysql #sql #sqlite

#mysql #sql #sqlite

Вопрос:

У меня есть таблица, подобная этой введите описание изображения здесь

Мне нужно получить только те данные, возраст которых > 10, вместе с этим мне нужно получить общее количество записей, присутствующих в таблице. т. е. в этом примере это 4 записи. что мне нужно, так это в одном запросе мне нужно получить общее количество записей, присутствующих в таблице и столбцах, которые я запрашиваю.

Запрос будет выглядеть примерно так

 SELECT ID, NAME, count(TOTAL NUMBER OF RECORDS IN TABLE) as Count from MYTABLE WHERE AGE > 10 
  

Есть идеи по этому поводу?

Ответ №1:

Вы можете использовать подзапрос в FROM предложении:

 SELECT ID, NAME, c.cnt as Count 
FROM MYTABLE CROSS JOIN
     (SELECT COUNT(*) as cnt FROM MYTABLE) c
WHERE AGE > 10 ;
  

Обе базы данных поддерживают оконные функции, но они здесь не очень полезны, потому что количество не фильтруется таким же образом, как внешний запрос. Если вам нужен фильтр для обоих, то в самых последних версиях вы можете сделать:

 SELECT ID, NAME, COUNT(*) OVER () as cnt
FROM MYTABLE 
WHERE AGE > 10 ;
  

Ответ №2:

Вы можете попробовать ниже — используя скалярный подзапрос

 SELECT ID, NAME, age,(select count(*) from mytable WHERE AGE > 10) as Count 
from MYTABLE 
WHERE AGE > 10