sql
Honza Pazdziora
adelton na informatics.muni.cz
Sobota Květen 11 13:40:09 CEST 2002
On Fri, May 10, 2002 at 10:24:02PM -0400, Petr Vanek wrote:
>
> mám tabulku, do které ukládám 'session' čtenářů webu a z ní pak
> zobrazuji informaci 'penguina si momentálně čte xx lidí'. přemýšlel
> jsem, zda by se dal z tabulky vytáhnout údaj, kolik bylo v jednom
> okamžiku nejvíce současně připojených lidí.
>
> tabulka vypadá takto:
>
> mysql> show columns from send;
> +----------+-------------+------+-----+---------+-------+
> | Field | Type | Null | Key | Default | Extra |
> +----------+-------------+------+-----+---------+-------+
> | ip | varchar(15) | | PRI | | |
> | lastsend | int(11) | | | 0 | |
> | id | int(11) | | PRI | 0 | |
> +----------+-------------+------+-----+---------+-------+
>
> a příklad záznamu:
>
> mysql> select * from send limit 5;
> +----------------+------------+-----+
> | ip | lastsend | id |
> +----------------+------------+-----+
> | 216.208.56.130 | 1020998002 | 0 |
> | 216.208.56.130 | 1020988395 | 470 |
> | 62.84.129.157 | 1021083187 | 0 |
> | 195.12.148.108 | 1020988563 | 585 |
> | 212.20.112.134 | 1020989058 | 585 |
> +----------------+------------+-----+
> 5 rows in set (0.02 sec)
>
>
> já počítám za přihlášeného člověka toho, kdo tam je do deseti minut, nad
> deset minut je off. to sql by tím pádem muselo využít nějakého limitu,
> který by byl ale proměnlivý..., seskupit to, seřadit...je toto vůbec
> proveditelné?
Počet zaznamů v posledních deseti minutách získáte pro každý čas
v lastsend (nemá to být sent a lastsent?) joinem
select a.lastsend, count(*) pocet
from send a, send b
where b.lastsend <= a.lastsend
and b.lastsend > a.lastsend - 10 * 60
group by a.lastsend
(Teda, je možné, že id 0 znamená, že ještě nemá přiděleno session id,
v tom případě je potřeba takové z toho selectu vyhodit, či co.)
Normálně byste nad tímhle udělal další subselect a vzal byste z toho
max(pocet). Protože ale z formátu těch výpisů vyvozuji, že používáte
MySQL, budete to muset nacpat do pomocné tabulky nebo ty hodnoty
vytahat ven do procedurálního klientského prostředí a to maximum si
napočítat ručně.
--
------------------------------------------------------------------------
Honza Pazdziora | adelton na fi.muni.cz | http://www.fi.muni.cz/~adelton/
... all of these signs saying sorry but we're closed ...
------------------------------------------------------------------------
Další informace o konferenci Test