Хорошо, у меня более миллиона записей, и мне нужно выбрать всю информацию из базы данных, где количество столбцов больше или равно 10.
Я знаю, что при наличии необходимости я должен использовать group by, а в тех случаях, когда я не могу использовать агрегатные функции с операторами, так что я хочу в псевдокоде:
Select column1,column2,column3
From MYdatabase
Where count(column1) > 10
Вот где я застреваю. Использовать ли подзапрос и добавить столбец с именем count? Я не уверен, как я мог бы написать это из рук в руки, и, поскольку я начинающий пользователь SQL, я мог бы смотреть в совершенно неверном направлении.
Весь мой запрос приведен ниже, я хочу изменить его, если будут выбраны только записи с количеством (callid)> = 10.
Select
FiscalMonthYear,
'MyCenter' = Case EP.Center
When 'Livermore Call Center' Then 'LCC'
When 'Natomas Call Center' Then 'NCC'
When 'Concord Call Center' Then 'CCC'
When 'Virtual Call Center' Then 'VCC'
When 'Morgan Hill Call Center' Then 'MHCC'
Else Center
End,
ECH.segstart,
ECH.consulttime,
EP.Queue,
(EP.MgrFName +' '+ EP.MgrLName)AS Manager,
(EP.SupFName +' '+ EP.SupLName)AS Supervisor,
(EP.RepFName +' '+ EP.RepLName)As Agent,
EP.RepPERNR,
LEFT(ECH.segstart, 19) as SegmentDateTime,
ECH.origlogin,
ECH.dialed_num,
ECH.segment,
ECH.SegStart_Date,
ECH.callid
FROM CMS_ECH.dbo.CaliforniaECH ECH
INNER JOIN CAPLESQL02.InfoQuest.dbo.IQ_Employee_Avaya_Id A ON ECH.origlogin = A.AvayaID
AND getdate () BETWEEN StartDate AND EndDate
INNER JOIN CAPLESQL02.InfoQuest.dbo.IQ_Employee_Profiles_v3 EP ON A.IQID = EP.RepID
AND getdate () BETWEEN RepToSup_StartDate and RepToSup_EndDate
AND getdate () BETWEEN SupToMgr_StartDate and SupToMgr_EndDate
AND getdate () BETWEEN RepQueue_StartDate and RepQueue_EndDate
INNER JOIN Cal_RemReporting.dbo.udFiscalMonthTable f on ECH.SegStart_Date = f.Tdate
Where dialed_num not like '______'
AND dialed_num not like ''
AND dialed_num not like '_______'
and EP.Center is NOT Null
and EP.Center not like 'Comm Ops'
and EP.Center not like 'Same Day Group'
and MgrLName not like 'Hollman'
and consulttime > 0
and ECH.SegStart_Date between getdate()-90 and getdate()-1
and EP.Queue not IN ('BST','Collections', 'DST','DSR','Escalations','Cable Store')
Я сам решил проблему, используя внутреннее соединение запроса, который выбирает первые 10 и объединяет все данные в столбце dialed_num. Работает без нареканий, всем спасибо за помощь!