Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.12.31;
Скачать: CL | DM;

Вниз

Запросы   Найти похожие ветки 

 
Клара   (2006-12-08 10:26) [0]

Есть таблица персонала, поля: Dat_R, Age(вычисляется).
Нужно разбить данные по возрастным группам: от20 до 29, от 30 до 39 и т.д и т.п


 
Elen ©   (2006-12-08 10:32) [1]


> Нужно разбить данные по возрастным группам: от20 до 29,
> от 30 до 39 и т.д и т.п

Ну так простой Order by просортирует.


 
Jeer ©   (2006-12-08 10:37) [2]


> Нужно разбить данные


Мы не будем телепатировать - уточните, что значит разбить.


 
Elen ©   (2006-12-08 10:43) [3]


> Клара

Кстати есть в SQL Groub By Having условия AND условия... (если не ошибаюсь ;))


 
Клара   (2006-12-08 10:44) [4]

На этой разбивке нужно построить график возрастных категорий и сортировка я думаю не пожет. Здесь нужно вычислить, сколько человек в возрасте от 20 до 29, сколько от 30 до 39.


 
oxffff ©   (2006-12-08 10:45) [5]

А я понял она хочет сколько есть молодых, полумолодых, недозрелых,
зрелых, перезрелых, ну и далее.


 
oxffff ©   (2006-12-08 10:46) [6]

О а я угадал.


 
Клара   (2006-12-08 10:46) [7]


> oxffff

Ну и что?


 
Sergey13 ©   (2006-12-08 10:47) [8]

А СУБД какая?


 
Клара   (2006-12-08 10:48) [9]

БД в Access, а проги в Delphi7


 
oxffff ©   (2006-12-08 10:49) [10]

Specifies a search condition for a group or an aggregate. HAVING can be used only with the SELECT statement. HAVING is typically used in a GROUP BY clause. When GROUP BY is not used, HAVING behaves like a WHERE clause.


 
oxffff ©   (2006-12-08 10:54) [11]

HAVING тебе не поможет

Тебе нужно будет использовать CASE и group by

Что то вроде этого

select id,case age .. as agegroup,sum(agegroup) from person group by id,agegroup


 
Клара   (2006-12-08 10:54) [12]


> oxffff

Вам скучно, Вы так развлекаетесь?


 
Sergey13 ©   (2006-12-08 10:55) [13]

> [9] Клара   (08.12.06 10:48)

Не знаю какие в Аксес есть функции, но надо нечто вроде (псевдокод)
select Int(Age/10) as Age10, count(Age)
from table_name
group by Int(Age/10)


 
Клара   (2006-12-08 10:56) [14]

А Access как воспримет Case?


 
oxffff ©   (2006-12-08 10:57) [15]

Приведи описание таблицы.


 
Клара   (2006-12-08 10:58) [16]


> Sergey13

Я попробую! Спасибо


 
oxffff ©   (2006-12-08 10:59) [17]

О пардон ошибся

select id,case age .. as agegroup,count(agegroup) from person group by id,agegroup

не sum, а count Конечно же


 
Клара   (2006-12-08 11:01) [18]


> oxffff

Pers(tabn,surname,name,data_r,adres,...)


 
Anatoly Podgoretsky ©   (2006-12-08 11:01) [19]

> Клара  (08.12.2006 10:26:00)  [0]

Привести к целому и поделить на 10
По этому значению группировать и вычислять количество


 
Anatoly Podgoretsky ©   (2006-12-08 11:03) [20]

> Клара  (08.12.2006 10:54:12)  [12]

Конечно скучно и почему бы не поразвлекаться, пока не будет задан вопрос?


 
oxffff ©   (2006-12-08 11:05) [21]

Anatoly Podgoretsky ©   (08.12.06 11:01) [19]

Ну или действительно так элегантнее.


 
Клара   (2006-12-08 11:05) [22]


> oxffff

Если честно, мне нравится идея, но ничего похожего я не видела.
А можно расписать CASE


 
Клара   (2006-12-08 11:07) [23]


> Anatoly Podgoretsky

А это я не Вам. Но за совет спасибо.


 
Anatoly Podgoretsky ©   (2006-12-08 11:11) [24]

> Клара  (08.12.2006 11:07:23)  [23]

Ну почему не мне, я тоже не против.
У тебя вопрос плохо поставлен, пришлось много кратно уточнять.
А у меня сегодня телепатор свежий.


 
Клара   (2006-12-08 11:17) [25]


> Anatoly Podgoretsky


О чем речь?


 
oxffff ©   (2006-12-08 11:17) [26]

Если возрастные группы неравномерны ( то есть не "кратны 10"), то CASE

Evaluates a list of conditions and returns one of multiple possible result expressions.

CASE has two formats:

The simple CASE function compares an expression to a set of simple expressions to determine the result.

The searched CASE function evaluates a set of Boolean expressions to determine the result.

Both formats support an optional ELSE argument.

Transact-SQL Syntax Conventions

Syntax

Simple CASE function:
CASE input_expression
    WHEN when_expression THEN result_expression
   [ ...n ]
    [
   ELSE else_result_expression
    ]
END
Searched CASE function:
CASE
    WHEN Boolean_expression THEN result_expression
   [ ...n ]
    [
   ELSE else_result_expression
    ]
END


Arguments
input_expression
Is the expression evaluated when the simple CASE format is used. input_expression is any valid expression.

WHEN when_expression
Is a simple expression to which input_expression is compared when the simple CASE format is used. when_expression is any valid expression. The data types of input_expression and each when_expression must be the same or must be an implicit conversion.

n
Is a placeholder that indicates that multiple WHEN when_expression THEN result_expression clauses, or multiple WHEN Boolean_expression THEN result_expression clauses can be used.

THEN result_expression
Is the expression returned when input_expression equals when_expression evaluates to TRUE, or Boolean_expression evaluates to TRUE. result expression is any valid expression.

ELSE else_result_expression
Is the expression returned if no comparison operation evaluates to TRUE. If this argument is omitted and no comparison operation evaluates to TRUE, CASE returns NULL. else_result_expression is any valid expression. The data types of else_result_expression and any result_expression must be the same or must be an implicit conversion.

WHEN Boolean_expression
Is the Boolean expression evaluated when using the searched CASE format. Boolean_expression is any valid Boolean expression.

Result Types
Returns the highest precedence type from the set of types in result_expressions and the optional else_result_expression. For more information, see Data Type Precedence (Transact-SQL).


 
Клара   (2006-12-08 11:21) [27]


> oxffff

Это что бы мало не показалось. Отстань мол.
Я приму к сведению.


 
oxffff ©   (2006-12-08 11:23) [28]

То есть в твоем случае будет

select case age
        ...
        WHEN age>20 and age<30 THEN 3
        WHEN age>30 and age<40 THEN 4
        ...
        end
        as agegroup,
        count(agegroup) from person group by agegroup

Естественно можно вместо THEN 3 писать THEN "20-29".

Это есть в MS SQL. Что касаемо ACCESS, то не знаю


 
oxffff ©   (2006-12-08 11:24) [29]


> Клара   (08.12.06 11:21) [27]
>
> > oxffff
>
> Это что бы мало не показалось. Отстань мол.
> Я приму к сведению.


НЕ понял тебя?


 
Клара   (2006-12-08 11:25) [30]


> oxffff

Для каких СУБД. И кто автор.


 
Клара   (2006-12-08 11:27) [31]


> oxffff

Я о размере справки.


 
oxffff ©   (2006-12-08 11:28) [32]


> Клара   (08.12.06 11:25) [30]
>
> > oxffff
>
> Для каких СУБД. И кто автор.


Вы говорите загадками.  Опять не понял вас.
Что вы хотите?


 
Клара   (2006-12-08 11:31) [33]


> oxffff

Вы перегрелись, раслабтесь и улыбнитесь.
Ничего обидного. А я пока займусь практикой.


 
Anatoly Podgoretsky ©   (2006-12-08 11:32) [34]

> oxffff  (08.12.2006 11:17:26)  [26]

не "кратны М"),


 
Anatoly Podgoretsky ©   (2006-12-08 11:33) [35]

> oxffff  (08.12.2006 11:23:28)  [28]

Тут есть ошибка в логике, все кратные 10 выпадают, первое отношение должно быть >=


 
oxffff ©   (2006-12-08 11:33) [36]


> Клара   (08.12.06 11:31) [33]
>
> > oxffff
>
> Вы перегрелись, раслабтесь и улыбнитесь.
> Ничего обидного. А я пока займусь практикой.


Вы поняли реализацию на CASE?


 
Клара   (2006-12-08 11:37) [37]

Да я Вас поняла. Мне нужно время, что-бы опробовать и тот и другой варианты.
Результат сообщу.


 
oxffff ©   (2006-12-08 11:38) [38]


> Anatoly Podgoretsky ©   (08.12.06 11:33) [35]
> > oxffff  (08.12.2006 11:23:28)  [28]
>
> Тут есть ошибка в логике, все кратные 10 выпадают, первое
> отношение должно быть >=


Абсолютно с вами согласен.
Я тоже заметил, но уже после того, как запостил.


 
Virgo_Style ©   (2006-12-08 11:39) [39]

oxffff ©   (08.12.06 11:28) [32]
Вы говорите загадками.  Опять не понял вас.
Что вы хотите?


Ты зачем девушку обижаешь, справку цитируешь? %-)
Или
"Ты не умничай, ты рукой махни".

imho.


 
Клара   (2006-12-08 11:40) [40]


> Anatoly Podgoretsky

А разве можно группировать по вычисляемому полю или имеется ввиду псевдоним?



Страницы: 1 2 3 вся ветка

Текущий архив: 2006.12.31;
Скачать: CL | DM;

Наверх




Память: 0.56 MB
Время: 0.06 c
15-1165556140
IMHO
2006-12-08 08:35
2006.12.31
How Vista Lets Microsoft Lock Users In


3-1161186750
Shopot
2006-10-18 19:52
2006.12.31
InterBase. Не могу найти WISQL!!!


2-1165689840
Pok
2006-12-09 21:44
2006.12.31
10040 Message too long


2-1165771806
FIL-23
2006-12-10 20:30
2006.12.31
запуск из одной процедуры другой процедуры


15-1165668405
Сатир
2006-12-09 15:46
2006.12.31
Delphi 7 Build 4.453