2013-05-11 58 views
1

請幫助我..如何計算在SQL Server中不同的列

我運行此查詢:

select 
    distinct barang, COUNT(*) as jumlah, CAST(COUNT(*) as float)/6 
from 
    tbltes 
group by 
    barang 
Having 
    CAST(COUNT(*) as float)/6 >0.2 

現在..我想指望所有的行即表明通過上面的查詢..

我試過這個查詢..

select 
    count (distinct barang)  
from 
    tbltes 
group by 
    barang 
having 
    CAST(COUNT(*) as float) /6 > 0.2 

,但不喜歡我的預期......

所以我需要你的幫助主...

+1

你能解釋爲什麼它是不是您所期望用一個例子是什麼? – Patashu 2013-05-11 13:50:36

+0

是否需要用於創建結果的數據庫表tbltes中的行數?或結果中的行數? – 2013-05-11 13:58:12

+0

這個應該做什麼?:'有CAST(COUNT(*)作爲浮點數)/ 6> 0.2'爲什麼不'HAVING COUNT(*)> = 2'? – 2013-05-11 14:55:12

回答

2

只要使用你現有的查詢作爲子查詢。順便說一下,如果您有group by條款,則不需要select distinct

select count(distinct sq.barang) 
from 
(
select barang as barang 
     ,COUNT(*) as jumlah 
from tbltes 
group by 
     barang 
) sq 
where cast(sq.jumlah as float)/6 > 0.2 

這裏是SQL Fiddle

+0

我曾嘗試過您的查詢,但它不起作用 Msg 102,Level 15,State 1,Line 11 ')'附近的語法不正確。 – 2013-05-11 14:20:13

+0

好的,我修改了SQL。看一看,讓我知道。 – 2013-05-11 14:40:20

+0

瞧!我的問題解決了!謝謝@Declan_K – 2013-05-11 14:58:23

2

你想用來創建結果數據庫表tbltes的行數?或結果中的行數?

如果是後者只是把Select Count(*) From圍繞整個事情...

Select Count(*) 
From (select distinct barang,COUNT(*) as jumlah, 
      CAST(COUNT(*) as float)/6 
     from tbltes 
     group by barang 
     Having CAST(COUNT(*) as float)/6 >0.2) z 
+0

我想要結果中的行數。 我曾嘗試過您的查詢,但它不起作用 Msg 102,Level 15,State 1,Line 4 ')'附近的語法不正確。 – 2013-05-11 14:16:46

+0

爲子查詢添加一個別名(我的編輯中的'z') – 2013-05-11 15:03:00

+0

已解決!謝謝@Charles Bretana – 2013-05-11 15:05:33