2013-09-24 85 views
0

如何選擇不同的一列(用戶),然後根據這一列輸出其餘字段?SQL:選擇不同的一列,但包含所有字段

輸入:

user  age  country 
-------------------------------- 
    Tom  34  US 
    Tom  32  EN 
    Dick  29  MX 
    Dick  29  DE 
    Harry 15  CA 

輸出(不同的用戶欄,並選擇一個行輸出場的其餘部分):

user  age  country count 
-------------------------------------- 
    Tom  34  US   2 
    Dick  29  MX   2 
    Harry 15  CA   1 

任何幫助,將不勝感激!

+0

您如何決定在輸出中包含哪個國家? –

+0

其餘的字段(年齡,國家)只是隨便挑選一行 – user1899415

回答

1
SELECT USER, AGE, MAX(COUNTRY), COUNT(*) 
FROM TABLE 
GROUP BY USER, AGE 

你可以嘗試改變MAXMIN。這裏不需要DISTINCT。 您可以使用一些數據格式,如SUBSTRING,但我不確定其餘數據是否總是像美國和美國等。如果您有超過2/3或者如果更改超出特定字符您可能會遇到一些錯誤的查詢結果。

根據意見和更新。

SELECT USER, MAX(AGE), MAX(COUNTRY), COUNT(*) 
FROM TABLE 
GROUP BY USER. 
+0

事情是年齡,國家是不同的,所以在這種情況下,我如何查詢不同的用戶? – user1899415

+0

這沒有意義,或者我沒有跟隨。湯姆有2個年齡段(不存在)或有2個湯姆斯。一個有32個,另一個有34個。如果是這樣的話,那麼你不必在TOM上計數2,因爲它是2個TOM。你想知道那裏有多少TOM?但如果其中一個來自EN,那麼爲什麼你會在美國呢? –

+0

這裏有兩個不同的TOM,但我只是很好奇,在總計TOM的人數時,其餘的字段只是隨機選擇 – user1899415

0
SELECT user, age, country, COUNT(*) AS c_rec FROM 
(
SELECT DISTINCT user, age, SUBSTRING(country, 1, 2) AS country FROM yourTable 
) T 
GROUP BY user, age, country 
+0

謝謝,你能解釋一下SUBSTRING(country,1,2)的作用嗎? – user1899415

+0

從字段國家獲取子字符串:第一參數您的字段國家,第二參數 - startIndex第三參數長度 – realnumber3012

相關問題