MySQL How do I create this subquery?

后端 未结 2 1053
情话喂你
情话喂你 2021-01-05 00:40

I have the following tables

Table Farm

+---------+--------+-------------------+-----------+------------+
| FARM_ID |Stock_ID| FARM_T         


        
2条回答
  •  暖寄归人
    2021-01-05 01:25

    Here is the query I've been working on. However, the results are slighly different from the ones you've posted in your question:

    select o.origin_name, s.stock_title, sum(
      case f.size
        when 'H' then
          case
            when sizes = 'H,L,M' then 70
            when sizes = 'H,M' then 80
            when sizes = 'H,L' then 90
            when sizes = 'H' then 100
            else 0
          end
        when 'M' then
          case
            when sizes = 'H,L,M' then 20
            when sizes = 'H,M' then 20
            when sizes = 'L,M' then 60
            when sizes = 'M' then 100
            else 0
          end
        else
          case
            when sizes = 'H,L,M' then 10
            when sizes = 'L,M' then 40
            when sizes = 'H,L' then 10
            when sizes = 'L' then 100
            else 0
          end
      end * r.score / 100) FinalScore
    from farm f
    join (
      select f.stock_id, group_concat(distinct f.size order by f.size) sizes
      from farm f
      join results r on f.farm_id = r.farm_id
      group by f.stock_id
    ) stockSizes on f.stock_id = stockSizes.stock_id
    join results r on f.farm_id = r.farm_id
    join (
      select f.stock_id, r.gate_id
      from results r
      join farm f on r.farm_id = f.farm_id
      group by f.stock_id, r.gate_id
      having sum(r.score = 0) = 0
    ) FullGates
    on FullGates.stock_id = f.stock_id and FullGates.gate_id = r.gate_id
    join stock s on s.stock_id = f.stock_id
    join origin o on o.origin_id = s.origin_id
    group by o.origin_id, s.stock_id
    

    Result:

    +-------------+-------------+------------+
    | ORIGIN_NAME | STOCK_TITLE | FINALSCORE |
    +-------------+-------------+------------+
    | US          | P1          |         93 |
    | CA          | P3          |         90 |
    | MX          | Q4          |        100 |
    | MX          | B3          |        100 |
    +-------------+-------------+------------+
    

    Let me know if this did the trick.

提交回复
热议问题