我有2個表。選擇/按多個列分組,但只計算一列的值
表#1:訂單
order_id | crit_1 | crit_2 | crit_3 | other
01 | A00 | GER | 49er | x
02 | A00 | GER | 49er | x
03 | A00 | USA | 49er | x
04 | C80 | DEN | 66er | x
05 | B50 | GER | 99er | x
表orders
有3個重要的標準,但不具備criterion_4
。還有另一張表order_positions
其中包含多個criterion_4
條目爲每個order_id
。
表2:分類
crit_1 | crit_2 | crit_3 | crit_4 | class_1 | class_2
A00 | GER | 49er | 4711 | A | 11
A00 | GER | 49er | 4712 | A | 21
A00 | USA | 49er | 4711 | D | 12
A00 | USA | 49er | 4712 | D | 21
B50 | GER | 99er | 4801 | B | 12
B50 | GER | 99er | 4802 | B | 12
B50 | GER | 99er | 4803 | B | 14
C80 | DEN | 66er | 4904 | C | 22
C80 | DEN | 66er | 4905 | C | 21
表classifications
包含分類爲:
orders = class_1 = combination of crit_1, crit_2 & crit_3
order_positions = class_2 = combination of crit_1, crit_2, crit_3 & crit_4
我有一個查詢,我就加入classifications.class_1
TA創建所有orders
及其各自的classification
的列表。
select
orders.order_id,
orders.crit_1,
orders.crit_2,
orders.crit_3,
classifications.class_1
from
orders
left join
classifications
on
orders.crit_1=classifications.crit_1 and
orders.crit_2=classifications.crit_2 and
orders.crit_3=classifications.crit_3
where
orders.others = "..."
group by
orders.order_id,
orders.crit_1,
orders.crit_2,
orders.crit_3,
classifications.class_1
我需要一個GROUP BY末以來,表的分類包含的crit_1
,crit_2
和crit_3
組合多個條目。但是這不是問題,因爲對於crit_1, crit_2
和crit_3
的每個組合,所需的classification_1
總是相同的。
現在我想創建另一個查詢,我只計算訂單的每個classification_1
的編號。事情是這樣的:
class_1 | number
A | 12
B | 5
C | 18
. | .
但我不知道怎麼沒有orders.order_id,orders.crit_1
,orders.crit_2
,orders.crit_3
和classifications.class_1
我只想算class_1
分類爲上述查詢的全選擇。
有什麼建議嗎?
編輯
我試了一下好像建議通過考希克納亞克:
select
--orders.order_id,
--orders.crit_1,
--orders.crit_2,
--orders.crit_3,
classifications.class_1,
count(*)
from
orders
left join
classifications
on
orders.crit_1=classifications.crit_1 and
orders.crit_2=classifications.crit_2 and
orders.crit_3=classifications.crit_3
where
orders.others = "..."
group by
--orders.order_id,
--orders.crit_1,
--orders.crit_2,
--orders.crit_3,
classifications.class_1
但結果是不正確的,我不知道如何重現這些數字。
舉幾個例子:
| class_1 | query w/ | query w/o | query |
| | group by | group by | count(*) |
---------------------------------------------
| A | 654 | 2179 | 1024 |
| B | 371 | 1940 | 667 |
| C | 94 | 238 | 247 |
當我使用我的查詢與group by
然後我得到654項爲class_1
= A. 當我做我的查詢,而無需group by
然後我得到2179項爲class_1
= A. 當我嘗試Count(*)
查詢,然後我得到了1024條目class_1
=答。
最後一個是絕對不正確的。
簡單'SELECT c.class_1, COUNT(*)FROM級O JOIN分類C對... GROUP BY c.class_1'。它不工作? –
可悲的是它沒有奏效。我上面編輯了我的問題,向您展示我的問題。 – Apo