2012-01-31 97 views
-1

我似乎無法按多個數據字段進行分組,並對特定的分組列進行求和。SELECT datafields with multiple groups and sum

我想將人員分組到客戶,然後將客戶分組爲價格,然後合計價格。合計金額(價格)最高的人應按升序列出。

例子:

table customer 
----------- 
customer | common_id 
green  2 
blue   2 
orange  1 

table invoice 
---------- 
person | price | common_id 
bob  2330  1 
greg  360  2  
greg  170  2 

SELECT DISTINCT 
    min(person) As person,min(customer) AS customer, sum(price) as price 
FROM invoice a LEFT JOIN customer b ON a.common_id = b.common_id 
GROUP BY customer,price 
ORDER BY person 

我想要的結果是:

**BOB:** 
Orange, $2230 

**GREG:** 
green, $360 
blue,$170 

The colors are the customer, that GREG and Bob handle. Each color has a price. 
+3

爲什麼'green'應該與'360'匹配並且用'170'與'blue'匹配?而不是相反呢? – 2012-01-31 18:35:41

+0

顏色是顧客,GREG和Bob處理。每種顏色都有一個價格。 – tdjfdjdj 2012-01-31 18:39:35

+0

那麼,你是說每個顧客都有一個價格? – 2012-01-31 18:41:45

回答

4

我可以看到兩個問題。其中一個有點挑剔,一個是非常基礎的。在SQL數據


介紹

SQL返回表格數據集。它無法返回帶標題的子集,查找某個數據透視表。

的意思是這是不可能的......

**BOB:** 
Orange, $2230 

**GREG:** 
green, $360 
blue, $170 

但是這可能...

Bob, Orange, $2230 
Greg, Green, $360 
Greg, Blue, $170 


相關數據

我可以直觀地看到你如何將數據聯繫在一起......

table customer     table invoice 
--------------     ------------- 
customer | common_id   person | price |common_id 
green  2     greg  360  2 
blue   2     greg  170  2 
orange  1     bob  2330  1 

但SQL沒有任何隱含的排序。如果一個表達可以聲明它們是相關的,那麼事物只能是相關的。例如,下面同樣有可能...

table customer     table invoice 
--------------     ------------- 
customer | common_id   person | price |common_id 
green  2     greg  170  2  \ These two have 
blue   2     greg  360  2 /been swapped 
orange  1     bob  2330  1 

這意味着你需要規則(以及可能的其他字段)明確宣稱其customer記錄匹配其invoice記錄,特別是當有兩個倍數與相同的common_id

規則的一個例子可能是,最低價格總是按字母順序與第一個客戶匹配。不過,如果你有在customercommon_id = 2記錄發生,但只有invoicecommon_id = 2記錄?或者記錄的數量總是匹配,你是否強制執行?

很有可能您需要額外的一塊(或多塊)信息到瞭解哪些記錄相互關聯。

0

你應該使用除了和你的所有選定字段組那麼也許函數GROUP_CONCAT(MySQL的)可以幫助你在串聯結果行組子句

+0

他沒有使用mysql。 – deutschZuid 2012-01-31 20:14:51

0

我不知道你怎麼可能做到這一點。 Greg有2種顏色和2種價格,你如何確定哪種顏色與哪種顏色搭配?

Greg Blue 170或​​Greg Blue 360​​ ????或將綠色附加到任何價格?

我認爲顏色需要有獨特的身份識別符,與個人獨特的身份識別符分開。

只是一個想法。