Главная страница
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

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


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


> Virgo_Style ©   (08.12.06 11:39) [39]
> oxffff ©   (08.12.06 11:28) [32]
> Вы говорите загадками.  Опять не понял вас.
> Что вы хотите?
>
> Ты зачем девушку обижаешь, справку цитируешь? %-)
> Или
> "Ты не умничай, ты рукой махни".
>
> imho.


Распиши доходчиво. Что ты хотел этим сказать.


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

> Клара  (08.12.2006 11:31:33)  [33]

Так мы давно улыбаемся :-)


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

> oxffff  (08.12.2006 11:38:38)  [38]

А я тоже только для порядка, поскольку на демонстрацию идеи это не влияет.


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

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

Можно, зависит от СУБД, в разных разный синтаксис, но обычно в условии группировки повторяется выражение из выборки, иногда алиасы, иногда номера и очень редко когда нельзя.


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

> oxffff  (08.12.2006 11:45:41)  [41]

> Что ты хотел этим сказать.

Он хотел Клару обидеть.


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


> Anatoly Podgoretsky

Мы победили, столь ненавистный мною проект.
Да прямо в лоб вычисляемое поле группировать нельзя, а вот через номера...


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


> oxffff

А ваш вариант я тоже опробую. Не обижайтесь, я еще к вам постучусь.


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

> Клара  (08.12.2006 12:11:47)  [47]

В дверь.


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


> Anatoly Podgoretsky

Это было бы забавно


 
Клара   (2006-12-08 13:02) [50]


> Anatoly Podgoretsky

Тук-тук! Мона?
У меня несколько другой вопрос: как можно изменить подписи в легенде компонента DBChart, на более понятные.


 
Elen ©   (2006-12-08 13:10) [51]


> Клара

Вспомни что я тебе говорила - OnGetLegendText


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

> Клара  (08.12.2006 13:02:50)  [50]

Не работаю с DBChart


 
Клара   (2006-12-08 13:13) [53]

Я все переделала с ADO глухо.

> OnGetLegendText

Попробую


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


> Anatoly Podgoretsky

Слишком мелко?


 
Elen ©   (2006-12-08 13:16) [55]


> Тук-тук!

Вспомнилось тут - "Knock knock knocking on the heaven doors"

> Попробую

Там при отрисовке это событие вызывается сктолоко сколько у тебя подписей. и можеш там саму подпись в виде строки менять, в зависимисти от индекса.


 
Клара   (2006-12-08 13:25) [56]


> Elen

Примерно так
DBChart1.Series[0].Labels:=
и что дальше


 
Elen ©   (2006-12-08 13:33) [57]


> и что дальше

Нет не так.
Вот это прописывать :

procedure TForm1.DBChart1GetLegendText(Sender: TCustomAxisPanel;
 LegendStyle: TLegendStyle; Index: Integer; var LegendText: String);
begin
LegendText :=inttostr(index)+" "+LegendText;
end;


Я что-то не пойму что ты делаеш....


 
Клара   (2006-12-08 13:38) [58]


> Elen

Мне не легенду нужно подписать, а деления в легенде


 
Anatoly Podgoretsky ©   (2006-12-08 13:39) [59]

> Клара  (08.12.2006 13:14:54)  [54]

Не требуется по работе, когда потребуется, то попробую.


 
Elen ©   (2006-12-08 13:40) [60]


>  деления в легенде

А что это такое?


 
Клара   (2006-12-08 13:53) [61]


> Elen

То есть ей можно поменять структуру.
А как значения к этому прибавить, т.е. мне нужно как по умолчанию, но с небольшой корректурой.


 
Elen ©   (2006-12-08 13:56) [62]


> То есть ей можно поменять структуру.

Нихита не пойму.... Кому поменять? Что такое деления в легенде? В легенде есть только текст и маркер цвета.


 
Anatoly Podgoretsky ©   (2006-12-08 14:17) [63]

> Elen  (08.12.2006 13:40:00)  [60]

Подписи оси.


 
Клара   (2006-12-08 14:23) [64]


> Elen

LegendText :=inttostr(1)+"от 30 до 39";
Вот сечас легенда отражает "от 30 до 39" столько, сколько значений в легенде, а мне нужно подписать каждую стр. в легенде.
Например:
"от 20 до 29"
"от 30 до 39"
"от 40 до 49"


 
Elen ©   (2006-12-08 14:32) [65]


>  а мне нужно подписать каждую стр. в легенде.

Ну так там еще передается индекс легенды. Внимательней на заголовок функции смотри


 
Клара   (2006-12-08 14:43) [66]

Вот по этому я о Labels и начинала разговор. Потому чтоБ то что в Labels, то и в легенде, то и на графике. Я скоро взорвусь!
Но все ошибки пригодятся в жизни.


 
Elen ©   (2006-12-08 14:53) [67]


>  Я скоро взорвусь!

Не взрывайся.

Например ты можеш не автоматом строить график, а в цикле проходиш по записям и Chart1.Series[0].AddX(<значение текущей записи>,"Пишу все что хочу");
И это уже будет именно в Лабелях на графике. И это все в купе с предидущими советами.


 
Клара   (2006-12-08 15:09) [68]


> Chart1.Series[0].AddX(<значение текущей записи>,"Пишу все
> что хочу");

Ты не поверишь.
Я именно этим сейчас и занимаюсь.


 
Anatoly Podgoretsky ©   (2006-12-08 15:15) [69]

> Клара  (08.12.2006 14:43:06)  [66]

Это не ошибки, а сложность задачи, к тому же авторы намудрили с терминогогией, а она у деловой графики весьма четкая и специфическая.
Поэтому когда ты говоришь о Labels, то я подразумеваю одно именно метки значений, а оказывается, что под этим идут три разных понятия. Легенда тоже самое.
А есть метки (подписи значений), подписи оси значений и легенда.
Это не добавляет понимания, а только вносит путаницу.


 
Anatoly Podgoretsky ©   (2006-12-08 15:16) [70]

> Клара  (08.12.2006 15:09:08)  [68]

Мы программисты и авторы тоже и мы и они очень далеки от деловой графиги.


 
Elen ©   (2006-12-08 15:21) [71]

Удалено модератором
Примечание: Флудить завязываем


 
Клара   (2006-12-08 15:26) [72]


> кто расскажет нибылицу и я поверю - получит полцарства


Женщинам полцарства дают за поцелуй, а вот программерам за небылицы.


 
Anatoly Podgoretsky ©   (2006-12-08 15:29) [73]

> Elen  (08.12.2006 15:21:11)  [71]

И коня в придачу


 
Elen ©   (2006-12-08 15:30) [74]

Удалено модератором
Примечание: Флудить завязываем


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

Какой чудный день!
У всех истерика...


 
Клара   (2006-12-08 15:46) [76]

Аут!
Хочу спать и оторваться на ком нибудь.


 
Anatoly Podgoretsky ©   (2006-12-08 15:51) [77]

> Клара  (08.12.2006 15:46:16)  [76]

> Хочу спать и оторваться на ком нибудь.

Я согласен.


 
Клара   (2006-12-08 15:55) [78]


> Anatoly Podgoretsky

Это будет "больно".
А что не на ком?


 
Anatoly Podgoretsky ©   (2006-12-08 15:58) [79]

> Клара  (08.12.2006 15:55:18)  [78]

А не на ком не устраивает.


 
Elen ©   (2006-12-08 16:07) [80]

Удалено модератором
Примечание: Флудить завязываем


 
MsGuns ©   (2006-12-09 01:46) [81]

Удалено модератором
Примечание: Флудить завязываем


 
Клара   (2006-12-11 14:06) [82]


> Elen


Chart1.Series[0].AddX(<значение текущей записи>,"Пишу все что хочу");
Я все о том же, AddX -это добавление нового значения.
А как поменять в графике подписи значений на более понятные? Например:
 в графике 2, а нужно "от 20 до 29"
 в графике 3, а нужно "от 30 до 39" и т.д.


 
Elen ©   (2006-12-11 14:13) [83]


> Клара

Так сразу вопрос - тип графика? (для точности), кстати Sorry за флуд.
Подписи значений - это те которые над кусками пирога висят наподобие хинтов? (имею виду тип диаграммы Pie)


 
Elen ©   (2006-12-11 14:17) [84]


> А как поменять в графике подписи значений на более понятные?
>  Например:
>  в графике 2, а нужно "от 20 до 29"
>  в графике 3, а нужно "от 30 до 39" и т.д.

Попробую догадаться - есть диаграмма столбцов. Каждый столбец определяет количество людей в возрастной группе. Так? Тогда примерно так :

Chart1.Series[0].AddX(10,"от 20 до 29");
Chart1.Series[1].AddX(30,"30 до 39");
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
Chart1.Series[I-тая].AddX(30,"от ГмГм до ГнГн");



 
Клара   (2006-12-11 14:17) [85]

Да  именно!
Вы знаете я нашла замечательный компонент DecisionCube, он изумительно строит графики, но подсоединить к ADOConnection я не могу.


 
Elen ©   (2006-12-11 14:21) [86]


> Вы знаете я нашла замечательный компонент DecisionCube,
> он изумительно строит графики, но подсоединить к ADOConnection
> я не могу.

Его и не надо цеплять к ADOConnection. Связка может быть такой : ADOConnection-ADOQuery-DataSource-DecisionQuery. Должно работать.


 
Клара   (2006-12-11 14:23) [87]


> Chart1.Series[0].AddX(10,"от 20 до 29");
> Chart1.Series[1].AddX(30,"30 до 39");
> ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
> Chart1.Series[I-тая].AddX(30,"от ГмГм до ГнГн");

Данные у меня уже есть, они беруться из запроса и в подписях числовые значения, а мне нужно более наглядно, что людям с улицы было понятно, что есть что.


 
Elen ©   (2006-12-11 14:23) [88]


>  Связка может быть такой : ADOConnection-ADOQuery-DataSource-
> DecisionQuery. Должно работать.

Гм. DataSource можно исключить...


 
Клара   (2006-12-11 14:32) [89]

Вы знаете он вызывает ошибку. Вот с родным компонентом он работает DecisionQuery1, а с Ado нет.


 
Клара   (2006-12-11 14:33) [90]

А DecisionQuery1 работает через алиас.


 
Elen ©   (2006-12-11 14:37) [91]


> Клара

Так. Тогда если в Серии уже есть данные и они начерчены то может поможет код наподобие :

procedure TForm1.Button1Click(Sender: TObject);
var t:TSeriesMarks;tp:TSeriesMarkPosition;
begin
t:=Chart1.Series[0].Marks;
tp:=t.Positions.Position[0];
t.Draw(0,clred,"qwqw",tp);
end;


Здесь вырисовывается марка над столбцом, пирогом, в общем точке значения на диаграмме где 0-номер точки. Это можно в цикле пройти для каждой точки.


 
Elen ©   (2006-12-11 14:42) [92]


> Клара

Чесное слово, может мое мнение и не верное, но как по мне проще пройти в цикле все записи и вручную построить обычный Chart, не связываясь с Decision и подобными примочками. Я тогда хоть могу контролировать что у меня отображается в полной мере.


 
Клара   (2006-12-11 14:55) [93]


> t.Draw(0,clred,"qwqw",tp);

А вот эту строку можно расшифровать, что здесь значит Draw и clred


 
Elen ©   (2006-12-11 14:57) [94]


> Клара

Draw значит рисовать Марку номер 0 красным цветом с надписью qwqw в позиции tp. Небольшой баг - если под этим номером марка еже есть то она не сотрется. Это не лучший выход так делать, но может на идею натолкнет



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

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

Наверх




Память: 0.69 MB
Время: 0.037 c
15-1165604393
Гоблин
2006-12-08 21:59
2006.12.31
McAffee


1-1163424853
GEN++
2006-11-13 16:34
2006.12.31
Контролер сетевой активности


15-1165325316
Галинка
2006-12-05 16:28
2006.12.31
Как реализовать кратность в цикле?


2-1165603566
serko
2006-12-08 21:46
2006.12.31
Почему?


15-1165583652
Cash
2006-12-08 16:14
2006.12.31
Про: "... как решать задачи?"