Текущий архив: 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.67 MB
Время: 0.043 c