Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Помогите пожалуйста запрос написать... / 6 сообщений из 6, страница 1 из 1
20.09.2002, 00:48:11
    #32051802
nerv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите пожалуйста запрос написать...
Че то листал толстенный справочник по SQL и никак не смог понять как делается.

Суть такая
Пусть имеется таблица base вида
fld1 fld2
----------------------
aaa uuu
aaa uuu
bbb yyyy
ccc yyyy
bbb uuu
Хочется следущего: объеденить строки поля fld1 по значениям и посчитать их количества, т.е. для каждого значения поля fld1 записать сколько раз в таблице оно встречается(это еще не все)
Делается так:

SELECT fld1 AS fld1, COUNT(fld1) AS Count
FROM base
GROUP BY fld1

Получим
fld1 Count
-------------
aaa 2
bbb 2
ccc 1

Кроме того, хочется, чтобы был еще один столбец, в котором бы суммировалось для каждого значения поля fld1 количество записей, значения поля fld2 в которых было бы равно домустим "uuu"

Т.е. хочется в итоге получить следущую таблицу

fld1 Count Count2
-----------------------
aaa 2 2
bbb 2 1
ccc 1 0

Т.е. хочется сделать запрос типа

SELECT fld1 AS fld1, COUNT(fld1) AS Count, COUNT(все те записи, значения поля fld2 которых равно 'uuu') AS Count2
FROM base
GROUP BY fld1

Если кто нить понял че надо сделать(неужели есть такие? :))) и знает как это сделать помогите плз.

ps Полями я называл столбцы, а записями - строки.
...
Рейтинг: 0 / 0
20.09.2002, 02:55:52
    #32051807
Дед Маздай
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите пожалуйста запрос написать...
Ну, когда надо uuu, то так и пишите:
SELECT b1.fld1 AS fld1, COUNT(b1.fld1) AS Count, (select count(1) from base b2 where b2.fld1 = b1.fld1 and b2.fld2 = 'uuu')
FROM base b1
GROUP BY b1.fld1
Разве SergSuper или Glory что-н.хитрое подскажут.
...
Рейтинг: 0 / 0
20.09.2002, 03:15:25
    #32051808
doctor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите пожалуйста запрос написать...
попробуй так
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
use pubs
set nocount on
if (select object_id('tbl'))is not null 
	drop table tbl
go
create table tbl(
[fld1] char( 10 )
,[fld2] char( 10 )
)
insert into tbl(fld1,fld2) Values('aaa','uuu')
insert into tbl(fld1,fld2) Values('aaa','uuu')
insert into tbl(fld1,fld2) Values('bbb','yyyy')
insert into tbl(fld1,fld2) Values('ccc','yyyy')
insert into tbl(fld1,fld2) Values('bbb','uuu')
go
set nocount off

select fld=sub1.fld, cnt1=isnull(sub1.cnt, 0 ), cnt2=isnull(sub2.cnt, 0 )
from
(select fld=fld1 from tbl group by(fld1)) as sub
left outer join
( select fld=fld1,cnt=count(fld1) from tbl group by fld1 ) as sub1 on sub.fld=sub1.fld
left outer join
( select fld=fld1,cnt=count(fld1) from tbl where fld2='uuu' group by fld1 ) as sub2 on sub.fld=sub2.fld

drop table tbl
...
Рейтинг: 0 / 0
20.09.2002, 04:32:51
    #32051811
doctor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите пожалуйста запрос написать...
Извиняюсь поспешил, так правельней буде.
Код: plaintext
1.
2.
3.
4.
5.
6.
select fld=sub1.fld, cnt1=isnull(sub1.cnt, 0 ), cnt2=isnull(sub2.cnt, 0 )
from
  ( select fld=fld1,cnt=count(fld1) from tbl group by fld1 ) as sub1 
left outer join
  ( select fld=fld1,cnt=count(fld1) from tbl where fld2='uuu' group by fld1 ) as sub2 
on sub1.fld=sub2.fld
...
Рейтинг: 0 / 0
20.09.2002, 22:30:05
    #32052139
nerv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите пожалуйста запрос написать...
...
Рейтинг: 0 / 0
21.09.2002, 13:44:20
    #32052162
ura
ura
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите пожалуйста запрос написать...
Код: plaintext
1.
2.
3.
4.
SELECT fld1 AS fld1, COUNT(fld1) AS Count
    ,sum(case when fld2='uuu' then  1  else  0  end) AS Count2 
FROM base 
GROUP BY fld1 
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Помогите пожалуйста запрос написать... / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]