SQL Server - группировать, иметь и считать в смеси - PullRequest
1 голос
/ 03 июля 2011

У меня есть база данных с длинным списком записей.Большинство столбцов имеют внешние ключи для других таблиц.

Пример :

ID SectorId BranchId
-- -------- --------
5  3        5

И тогда у меня будет таблица с секторами, ветви и т. Д.

Моя проблема :

Я хочу знать, сколько записей имеет сектор 1, 2, 3 ... n.Итак, я хочу group by Sector, а затем какой-нибудь count(*), который скажет мне, сколько их каждого.

Ожидаемый результат

Так, например,если у меня 20 записей, результат может выглядеть следующим образом:

SectorId Count
-------- -----
1        3
2        10
3        4
4        6

Мои попытки до сих пор

Я обычно не очень много работаю с базами данных, и я былпытаюсь решить это за 1,5 часа.Я пробовал что-то вроде этого:

SELECT COUNT(*)
FROM Records r
GROUP BY r.Sector
WHERE r.Date BETWEEN '2011-01-01' AND '2011-12-31'

Но ... ошибки и проблемы повсюду!

Я был бы очень признателен за помощь.Я знаю, что это, вероятно, очень просто.

Спасибо!

Ответы [ 2 ]

4 голосов
/ 03 июля 2011

Неправильная последовательность вашего запроса; это должно быть так: -

SELECT COUNT(*)
FROM Records r
WHERE r.Date BETWEEN '2011-01-01' AND '2011-12-31'
GROUP BY r.Sector

На выходе будет только счетчик, т.е.

count
-----
3
10
4
6

Если вы хотите получить как сектор, так и счетчик, вам нужно немного изменить запрос

SELECT r.Sector, COUNT(*) as Count
FROM Records r
WHERE r.Date BETWEEN '2011-01-01' AND '2011-12-31'
GROUP BY r.Sector

Вывод будет таким: -

Sector Count
------ -----
1      3
2      10
3      4
3      6
1 голос
/ 17 февраля 2012

Ваш запрос был частично верным, но он нуждается в некоторой модификации.

Если я напишу так: -

SELECT r.SectorID,COUNT(*) AS count
FROM Records r
WHERE r.Date BETWEEN '2011-01-01' AND '2011-12-31'
GROUP BY r.SectorID

Тогда вывод будет: -

SectorID  Count 
1           3
2          10
3           4
4           6
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...