2012-01-31 17 views
-1

複数のデータフィールドでグループ化し、特定のグループ化された列を合計すると思われます。複数のグループと合計を持つデータフィールドを選択する

私は個人を顧客にグループ化してから、顧客を価格設定して価格を合計したいと考えています。合計金額(価格)が最も高い人は、昇順に並べる必要があります。

例:

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'と 'blue'と' 170'と一致するのですか?それ以外の方法はありませんか? –

+0

色はGREGとBobが扱う顧客です。各色は価格があります。 – tdjfdjdj

+0

だから、あなたは各顧客に価格があると言っていますか? –

答えて

4

私には2つの問題があります。 1つは少しばかげており、1つは非常に基本的なものです。


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 

これはあなたが明示的の両方での倍数があり、特にinvoice、レコード、customerレコードの一致を述べるルール(およびおそらく追加のフィールドを)必要があることを意味します...同様に可能です同じcommon_id

ルールの例としては、最低価格は常に最初の顧客とアルファベット順に一致します。あなたはcommon_id = 2ためinvoicecommon_id = 2ためcustomerたレコードが、唯一のレコードを持っている場合しかし、その後、何が起こりますか?または、レコードの数は常に一致しますか?それを強制しますか?

をご存じの方は、お互いのレコードが一致する可能性があります。

0

あなたは合計以外のすべてのあなたの選択したフィールドを使用して、グループは多分関数GROUP_CONCAT(MySQLは)連結であなたを助けることができる必要がありますグループ節の結果行

+0

彼はmysqlを使用していません。 – deutschZuid

0

あなたはおそらくこれを行う方法がわかりません。グレッグは2つの色と2つの価格を持っていますが、どれがどちらになるかはどうやって決めるのですか?

グレッグブルー170またはグレッグブルー360 ????どちらの価格にグリーンをつけるか?

私は色が一意のアイデンティティから離れて、一意のアイデンティティを持つ必要があると思います。

単なる考えです。

関連する問題