mysql sum和count 2表按问题分组

mysql sum和count 2表按问题分组,mysql,Mysql,表A 表B id | s_id | unit_value ----------------------------- 1 | S01 | 5 2 | S01 | 8 3 | S01 | 6 4 | S01 | 3 5 | S02 | 9 需要结果为 id | a_id | price ------------------------ 1 | 2 | 900 2 | 2

表A

表B

id  | s_id      | unit_value
-----------------------------
1   | S01       | 5
2   | S01       | 8
3   | S01       | 6
4   | S01       | 3
5   | S02       | 9
需要结果为

id  | a_id      | price
------------------------
1   | 2         | 900
2   | 2         | 100
3   | 2         | 600
4   | 3         | 100
5   | 5         | 100
6   | 1         | 10
7   | 1         | 200
8   | 4         | 100
9   | 4         | 200
为此,我尝试了如下查询:

s_id    |  total_price  | total_unit  | count(s_id)
----------------------------------------------------
SO1     |    2210       |      22     |   4
SO2     |    100        |      9      |   1

谁能帮助我如何获得正确的结果

下一个查询可以解决问题:

SELECT a.s_id
     , SUM(b.price) AS total_price
     , SUM(a.unit_value) AS total_unit
     , COUNT(s_id)
  FROM A a
  JOIN B b 
    ON b.a_id = a.id 
 GROUP 
    BY a.s_id

上进行测试,只需在B的子查询中添加价格

s|U id |总价|总单位|计数(s|U id) :--- | ----------: | ---------: | ----------: S01 | 2210 | 22 | 4 S02 | 100 | 9 | 1 小提琴

SELECT a.s_id
     , SUM(b.price) AS total_price
     , total_unit
     , count_s_id
  FROM A a
  JOIN B b ON b.a_id = a.id 
  JOIN (
    -- join pre-grouped table
    SELECT
        s_id,
        SUM(A.unit_value) AS total_unit,
        COUNT(s_id) count_s_id 
    FROM A GROUP BY s_id
  ) grouped_a ON grouped_a.s_id = a.s_id
 GROUP 
    BY a.s_id;
SELECT a.s_id
     , SUM(b.price) AS total_price
     , SUM(a.unit_value) AS total_unit
     , COUNT(s_id)
  FROM A a
  JOIN (SELECT SUM(price) price , a_id FROM B GROUP BY a_id) b  
    ON b.a_id = a.id 
 GROUP 
    BY a.s_id
s_id | total_price | total_unit | COUNT(s_id) :--- | ----------: | ---------: | ----------: S01 | 2210 | 22 | 4 S02 | 100 | 9 | 1