Форум: "Начинающим";
Текущий архив: 2006.12.31;
Скачать: [xml.tar.bz2];
ВнизЗапросы Найти похожие ветки
← →
Клара (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;
Скачать: [xml.tar.bz2];
Память: 0.54 MB
Время: 0.039 c