子查询和MYSQL

时间:2015-11-05 02:49:25

标签: mysql

对于我的班级,我们获得了与子查询相关的作业,我的教授一般都擅长解释我努力学习本部分核心原理的代码。

以下是表格的代码以及我认为我可能需要做的事情的开始

CREATE TABLE WEBSERVER 
( IP CHAR(30), 
vendor CHAR(30), 
os CHAR(30), 
location CHAR(30), 
PRIMARY KEY(IP) 
);

CREATE TABLE TRAFFIC 
( id INT, 
tdate DATE , 
ttime TIME, 
SourceIP CHAR(30), 
Protocol CHAR(10), 
WEBSERVER_IP CHAR(30), 
packetsize FLOAT, 
PRIMARY KEY (id), 
FOREIGN KEY (WEBSERVER_IP) REFERENCES WEBSERVER(IP)
)

这是我到目前为止所做的事情,并且正在努力从这里开始:

select count(protocol), Protocol from traffic group by protocol

这就是问题:

查找每种协议类型的连接频率。 (比率=(与协议的连接数)/(连接总数)

-HINT:您需要为此问题使用子查询)

1 个答案:

答案 0 :(得分:1)

你可以这样做:

select protocol, count(*)/(select count(*) from traffic) as freq
from traffic
group by protocol

如果你的表有这样的条目:

create table traffic (protocol char(10));
insert into traffic values ('TCP'), ('UDP'), ('TCP');

您的结果将是:

| protocol | freq   |
|----------|--------|
|      TCP | 0.6667 |
|      UDP | 0.3333 |

示例:http://sqlfiddle.com/#!9/b699f/2