Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / concat + group by / 3 сообщений из 3, страница 1 из 1
14.05.2004, 17:59
    #32518785
swop
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
concat + group by
Всем доброго дня.

есть таблица
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
`unix_secs` int( 11 ) unsigned default NULL,
`unix_nsecs` int( 11 ) unsigned default NULL,
`sysuptime` int( 11 ) unsigned default NULL,
`router_id` smallint( 1 ) unsigned default NULL,
`dpkts` tinyint( 4 ) unsigned default NULL,
`doctets` tinyint( 4 ) unsigned default NULL,
`first` int( 11 ) unsigned default NULL,
`last` int( 11 ) unsigned default NULL,
`src_oct_0` tinyint( 1 ) unsigned default NULL,
`src_oct_1` tinyint( 1 ) unsigned default NULL,
`src_oct_2` tinyint( 1 ) unsigned default NULL,
`src_oct_3` tinyint( 1 ) unsigned default NULL,
`dst_oct_0` tinyint( 1 ) unsigned default NULL,
`dst_oct_1` tinyint( 1 ) unsigned default NULL,
`dst_oct_2` tinyint( 1 ) unsigned default NULL,
`dst_oct_3` tinyint( 1 ) unsigned default NULL,
`id_if-in-index` tinyint( 1 ) unsigned default NULL,
`id_if-ou-index` tinyint( 1 ) unsigned default NULL,
`src_port` tinyint( 2 ) unsigned default NULL,
`dst_port` tinyint( 2 ) unsigned default NULL,

`proto_id` tinyint( 2 ) unsigned default NULL

делаю над ней выборку

Код: plaintext
1.
2.
3.
4.
select concat(dst_oct_0, '.', dst_oct_1, '.', dst_oct_2, '.', dst_oct_3) as dest, sum(doctets) 
from accounting 
group by dst_oct_0, dst_oct_1, dst_oct_2, dst_oct_3 
limit  10 ;

получаю сей бред


+---------+--------------+
| dest | sum(doctets) |
+---------+--------------+
| 4.4.73. | 255 |
| 4.4.141 | 255 |
| 4.4.237 | 255 |
| 4.8.13. | 747 |
| 4.8.73. | 255 |
| 4.8.253 | 255 |
| 4.10.22 | 275 |
| 4.11.51 | 335 |
| 4.14.12 | 255 |
| 4.14.16 | 570 |
+---------+--------------+


должно быть 4 октета! вся эта фигня происходит при групировке, как быть ? :(

версия mysql = 3.23. также проверялось на 4.0.15 standart.

для сравнения приведу тотже запрос но на MSSQL

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
select top  10  cast (dst_oct_0 as varchar( 3 )) + '.' + 
	      cast (dst_oct_1 as varchar( 3 )) + '.' +
	      cast (dst_oct_2 as varchar( 3 )) + '.' +
	      cast (dst_oct_3 as varchar( 3 )) as dest,
	      sum (doctets) /  1024  as kbyte
from accounting
group by dst_oct_0, dst_oct_1, dst_oct_2, dst_oct_3
order by kbyte desc

автор
195.68.129.93 46142
172.20.0.13 15845
172.20.7.255 5484
213.33.223.162 5395
10.10.11.128 2717
172.20.0.11 2050
172.20.3.100 1505
172.20.0.178 1375
10.10.1.176 1284
194.67.23.20 1276
...
Рейтинг: 0 / 0
14.05.2004, 19:45
    #32518912
sirsergio
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
concat + group by
А вот так не пробовал?

select concat(dst_oct_0, '.', dst_oct_1, '.', dst_oct_2, '.', dst_oct_3) as dest, sum(doctets)
from accounting
group by concat(dst_oct_0, '.', dst_oct_1, '.', dst_oct_2, '.', dst_oct_3)
limit 10;

Я бы именно так и поступил.
У тебя в первом примере группировка осуществляется по четырем полям, грубоговоря, отдельно по каждому полю. А sum(doctets), как я понял, хочешь иметь для каждого совпадения совокупности(!!!) 4-х полей. Поэтому никакого правильного соответствия dect'у суммы ты не получишь. Вот!
Попробуй и удача улыбнется тебе :))
...
Рейтинг: 0 / 0
14.05.2004, 19:57
    #32518923
swop
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
concat + group by
если бы, этот вариант я использовал с самого начала. чтоб не быть голословным
вот вывод

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
mysql> select concat(dst_oct_0, '.', dst_oct_1, '.', dst_oct_2, '.', dst_oct_3) as dest, sum(doctets)
    -> from accounting
    -> group by concat(dst_oct_0, '.', dst_oct_1, '.', dst_oct_2, '.', dst_oct_3)
    -> limit 10;
+---------+--------------+
| dest    | sum(doctets) |
+---------+--------------+
| 10.0.0. |       519903 |
| 10.0.1. |       183999 |
| 10.10.1 |      2442274 |
| 10.16.0 |        81090 |
| 10.17.1 |       257656 |
| 10.21.2 |          453 |
| 12.107. |          255 |
| 12.129. |        20676 |
| 12.158. |        10770 |
| 12.180. |          255 |
+---------+--------------+
10 rows in set (6.59 sec)
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / concat + group by / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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