2015-11-05 113 views
0

對於我的課程,我們獲得了與子查詢相關的任務,而且我的教授一般擅長解釋代碼,我努力想要了解本部分的核心原則。子查詢和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的數目:您需要使用子查詢爲這個問題)

+0

天哪,我希望你的教授(從您的個人資料頁)不會讀取:)也許改寫頂部,並說「雖然我的教授是很好的,我奮力」 – Drew

+0

也就是說好點。試圖弄明白這一點,還有什麼不是。 –

+0

不要安東尼。我們中有些人現在正在談論其他問題。我們猛撲過去。有可樂或什麼的。與此同時,通過在左窗格中加載sqlfiddle.com來幫助我們。所以我們可以阻止它。並粘貼回網址 – Drew

回答

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

+0

非常感謝,這正是我一直在尋找的。我已經接近我想要得到的東西,但是從我們的網頁沒有關於將子查詢放入原始選擇語句內的示例,所以我不能100%確定這是否是我需要做的。 –