Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Помогите с несложным запросом!!!  [new]
Stager93
Member

Откуда:
Сообщений: 18
Добрый день, господа, перебрал весь форум, не смог найти ответ, надеюсь подскажете. Ситуация следующая:

Имеется база и нужно сделать выбор только тех строк, значения которых повторяются более двух раз.
1 май 16, 12:43    [19126716]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с несложным запросом!!!  [new]
DarkMaster
Member

Откуда: Donetsk,Ukraine
Сообщений: 6378
Stager93,

Having(count(fieldName)>=2)
1 май 16, 12:46    [19126726]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с несложным запросом!!!  [new]
Stager93
Member

Откуда:
Сообщений: 18
DarkMaster, Спасибо, а возможно ли это сделать без использования HAVING, а например на этапе WHERE?
1 май 16, 12:50    [19126737]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с несложным запросом!!!  [new]
aleks2
Guest
Два cross apply или два exists.

С exists сложнее.
1 май 16, 13:57    [19126829]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с несложным запросом!!!  [new]
Stager93
Member

Откуда:
Сообщений: 18
А если такая штука:

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

Мы вывели значения, посчитали строки оставшиеся...

SELECT		cid, Count(*)
FROM		logs_sample	
GROUP BY	cid	
Having (count(cid)>=2)


Далее требуется вывести значения из соседнего столбца UA, напротив оставшихся строк..
1 май 16, 15:31    [19126891]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с несложным запросом!!!  [new]
iljy
Member

Откуда:
Сообщений: 8711
Stager93,

select * from logs_sample
where cid in (ваш запрос)
1 май 16, 15:57    [19126909]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с несложным запросом!!!  [new]
Stager93
Member

Откуда:
Сообщений: 18
Спасибо всем!!!! Супер, всё получилось))
1 май 16, 18:24    [19127057]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с несложным запросом!!!  [new]
Stager93
Member

Откуда:
Сообщений: 18
iljy, а как вбить запрос в скобки, что бы выбрал нужные ячейки и отсеил ненужные?? что то не получается
1 май 16, 18:33    [19127067]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с несложным запросом!!!  [new]
Stager93
Member

Откуда:
Сообщений: 18
iljy, Если вбиваю свой вопрос, то пишет ошибку и предлагает EXIST использовать(
1 май 16, 18:41    [19127092]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с несложным запросом!!!  [new]
Stager93
Member

Откуда:
Сообщений: 18
iljy,

SELECT		cid, Count(*) As total	 
FROM		logs_sample		
GROUP BY	cid		
Having (count(cid)>=2)	

SELECT *
FROM logs_sample
WHERE cid in 

(

SELECT		cid, Count(*) As total	 
FROM		logs_sample		
GROUP BY	cid		
Having (count(cid)>=2)	

)
1 май 16, 18:44    [19127100]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с несложным запросом!!!  [new]
Stager93
Member

Откуда:
Сообщений: 18
Stager93,

без первого блока (случайно скопировалось)
1 май 16, 18:45    [19127103]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с несложным запросом!!!  [new]
_bob
Member

Откуда: Москва
Сообщений: 1654
SELECT logs_sample.cid
FROM logs_sample
WHERE logs_sample.cid in

(

SELECT logs_sample.cid
FROM logs_sample
GROUP BY logs_sample.cid
Having (count(logs_sample.cid)>=2)

)

так точно должно сработать
и примите себе за правило писать именно в такой манере как написано у меня
1 май 16, 19:14    [19127162]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с несложным запросом!!!  [new]
Stager93
Member

Откуда:
Сообщений: 18
_bob,
Спасибо, так получилось


А можно каким то образом посчитать количество ячеек в данном выражении:

SELECT	logs_sample.cid
FROM	logs_sample	
GROUP BY	logs_sample.cid	
Having (count(logs_sample.cid)>=2)	


Потом вот в этом:

SELECT logs_sample.cid
FROM logs_sample
WHERE logs_sample.cid in 

(

SELECT	logs_sample.cid
FROM	logs_sample	
GROUP BY	logs_sample.cid	
Having (count(logs_sample.cid)>=2)	

)


И разделить ВТОРОЙ результат на ПЕРВЫЙ?
1 май 16, 19:25    [19127186]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с несложным запросом!!!  [new]
Stager93
Member

Откуда:
Сообщений: 18
Stager93,

и Где нибудь вывести полученное число, что бы было вроде: Результат= (ПОЛУЧЕННОЕ ЧИСЛО)
1 май 16, 19:26    [19127189]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с несложным запросом!!!  [new]
iljy
Member

Откуда:
Сообщений: 8711
Stager93
iljy, Если вбиваю свой вопрос, то пишет ошибку и предлагает EXIST использовать(


ага, и даже объясняет, почему предлагает.

Stager93

А можно каким то образом посчитать количество ячеек в данном выражении:

Потом вот в этом:


select SUM(cnt) c1, COUNT(*) c2
from(
	SELECT	logs_sample.cid, count(logs_sample.cid) cnt
	FROM	logs_sample	
	GROUP BY	logs_sample.cid
	HAVING count(logs_sample.cid) >= 2
)t
1 май 16, 19:41    [19127215]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с несложным запросом!!!  [new]
Stager93
Member

Откуда:
Сообщений: 18
iljy,

А как после этого разделить один столбец на другой?
1 май 16, 20:00    [19127257]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с несложным запросом!!!  [new]
Stager93
Member

Откуда:
Сообщений: 18
Stager93,

и что означает буква t- за скобкой в конце?
1 май 16, 20:01    [19127260]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с несложным запросом!!!  [new]
iljy
Member

Откуда:
Сообщений: 8711
Stager93
iljy,

А как после этого разделить один столбец на другой?


С помощью операции / ? Желательно еще типы привести к нецелым, а то нежданчик может быть.


Stager93
Stager93,

и что означает буква t- за скобкой в конце?


И. Использование производной таблицы
1 май 16, 20:06    [19127269]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с несложным запросом!!!  [new]
Stager93
Member

Откуда:
Сообщений: 18
iljy,

Супер, спасаешь прям)

а не мог бы написать кодом, как впихнуть деление, а то чето не выходит(
1 май 16, 20:11    [19127276]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с несложным запросом!!!  [new]
iljy
Member

Откуда:
Сообщений: 8711
Stager93,

а че не выходит-то? выражение в списке select написать? select SUM(cnt) / COUNT(*)
1 май 16, 21:05    [19127361]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с несложным запросом!!!  [new]
Stager93
Member

Откуда:
Сообщений: 18
iljy,

Ошибку выдает, вот по-этому и прошу написать полностью... ибо в силу моей неопытности могу накосячить
2 май 16, 14:41    [19128391]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с несложным запросом!!!  [new]
Glory
Member

Откуда:
Сообщений: 104760
Stager93
ибо в силу моей неопытности могу накосячить

Вы можете накосячить при делении одного выражения на другое ?
2 май 16, 14:43    [19128395]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с несложным запросом!!!  [new]
iljy
Member

Откуда:
Сообщений: 8711
Stager93
iljy,

Ошибку выдает, вот по-этому и прошу написать полностью... ибо в силу моей неопытности могу накосячить


Ничего, вот так опыт и набирается, в чтении сообщений об ошибках и документации.
2 май 16, 14:48    [19128407]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с несложным запросом!!!  [new]
Stager93
Member

Откуда:
Сообщений: 18
Glory, я всё могу. Спасибо за помощь=)
2 май 16, 14:49    [19128416]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с несложным запросом!!!  [new]
Glory
Member

Откуда:
Сообщений: 104760
Stager93
Glory, я всё могу. Спасибо за помощь=)

И что теперь за вами все подтирать надо ?
2 май 16, 14:53    [19128423]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить