#sql #sql-server
#sql #sql-сервер
Вопрос:
У меня есть такие данные,
id state country name years
1 ohio US steve 2020-08-11
2 delhi india priya 2019-09-01
3 ohio US alex 2020-07-11
4 NY US kristen 2018-06-11
5 hyderabad india riya 2019-08-16
6 hyderabad india isha 2019-05-04
select (count(*)) as 'Counts',country, state
from dbo.people
group by country, state
having count(*)>1
Я написал приведенный выше запрос для подсчета людей, живущих в одном и том же состоянии
counts country state
2 india hyderabad
2 US ohio
не могли бы вы помочь мне написать запрос, который вернет сумму подсчета, а затем добавит 1 к сумме,
Заранее спасибо
Комментарии:
1. Если вы хотите добавить 1 к a
COUNT
, тогда просто1
.
Ответ №1:
Вы можете задать свой первоначальный запрос как CTE (общее табличное выражение) для суммирования их количества :
with initial_query as (
select (count(*)) as 'Counts',country, state
from dbo.people
group by country, state
having count(*)>1
)
select sum(Counts) 1 as Counts
from initial_query
Комментарии:
1. Большое спасибо Marc за ответ, если мне нужно упорядочить его по имени, нужно ли мне использовать row_number в подзапросе
2. @csharpdev почему вы хотите заказать сумму?, может быть, если вы покажете нам результат, который вы хотите получить, мы сможем помочь вам его достичь.
3. Привет, Марк, например, например, если год = 16 августа 2019 года, мне нужно найти количество всех дат, меньших этой даты, т.е. ‘2019-05-04’ для того же года количество будет равно 1, а затем добавьте 1 к количеству выберите количество (*), годы от [практика].[dbo]. [Люди] группировка по годам порядок по годам desc Количество лет 1 2020-08-11 1 2020-07-11 1 2019-09-01 1 2019-08-16 1 2019-05-04 1 2018-06-11