Подзапрос SQL с помощью COUNT

У меня есть оператор SQL, который работает

SELECT * FROM eventsTable WHERE columnName='Business'

Я хочу добавить это как подзапрос ...

COUNT(Business) AS row_count

Как мне это сделать?

Ответы на вопрос(4)

Решение Вопроса

Это, наверное, самый простой способ, но не самый красивый:

SELECT *,
    (SELECT Count(*) FROM eventsTable WHERE columnName = 'Business') as RowCount
    FROM eventsTable
    WHERE columnName = 'Business'

Это также будет работать без использованияgroup by

SELECT *, COUNT(*) OVER () as RowCount
    FROM eventsTables
    WHERE columnName = 'Business'
 gbn07 окт. 2010 г., 20:47
+1 За предложениеэлегантный
 McSonk23 мар. 2017 г., 19:11
Обратите внимание, чтоOVER не поддерживается стандартом SQL и не будет доступен во всех СУБД (например,MySQL не поддерживает это).

Предполагая, что есть столбец с именем business:

SELECT Business, COUNT(*) FROM eventsTable GROUP BY Business

SELECT e.*,
       cnt.colCount 
FROM eventsTable e
INNER JOIN (
           select columnName,count(columnName) as colCount
           from eventsTable e2 
          group by columnName
           ) as cnt on cnt.columnName = e.columnName
WHERE e.columnName='Business'

- добавлено пространство

Хотите узнать количество строк?

SELECT columnName, COUNT(*) AS row_count
FROM eventsTable
WHERE columnName = 'Business'
GROUP BY columnName
 Jim07 окт. 2010 г., 20:41
Не может иметьwhere пункт в группе по. использованиеHaving
 codingbadger07 окт. 2010 г., 20:43
@ Джим - Вы можете использовать естьwhere оговорка сgroup by, Вам нужно будет использоватьhaving если вы хотите отфильтровать результат агрегата при использованииgroup by.
 JM117 мая 2019 г., 20:56
Предложение Where должно быть перед Group By, а наличие должно быть после Group By.

Ваш ответ на вопрос