SELECT 
  cscart_product_prices.product_id, 
  MIN(
    IF(
      cscart_product_prices.percentage_discount = 0, 
      cscart_product_prices.price, 
      cscart_product_prices.price - (
        cscart_product_prices.price * cscart_product_prices.percentage_discount
      )/ 100
    )
  ) AS price 
FROM 
  cscart_product_prices 
WHERE 
  cscart_product_prices.product_id IN (
    639, 640, 641, 642, 643, 644, 645, 646, 
    647, 648, 649, 650, 651, 652, 653, 654, 
    655, 656, 657, 658, 659, 660, 661, 662
  ) 
  AND cscart_product_prices.lower_limit = 1 
  AND cscart_product_prices.usergroup_id IN (0, 1) 
GROUP BY 
  cscart_product_prices.product_id

Query time 0.00110

JSON explain

{
  "query_block": {
    "select_id": 1,
    "table": {
      "table_name": "cscart_product_prices",
      "access_type": "range",
      "possible_keys": ["usergroup", "product_id", "lower_limit", "usergroup_id"],
      "key": "product_id",
      "key_length": "3",
      "used_key_parts": ["product_id"],
      "rows": 24,
      "filtered": 4.897957802,
      "index_condition": "cscart_product_prices.product_id in (639,640,641,642,643,644,645,646,647,648,649,650,651,652,653,654,655,656,657,658,659,660,661,662)",
      "attached_condition": "cscart_product_prices.lower_limit = 1 and cscart_product_prices.usergroup_id in (0,1)"
    }
  }
}

Result

product_id price
639 0.00000000
640 0.00000000
641 0.00000000
642 0.00000000
643 0.00000000
644 0.00000000
645 0.00000000
646 0.00000000
647 0.00000000
648 0.00000000
649 0.00000000
650 0.00000000
651 0.00000000
652 0.00000000
653 144000.00000000
654 0.00000000
655 0.00000000
656 0.00000000
657 0.00000000
658 0.00000000
659 0.00000000
660 0.00000000
661 27600.00000000
662 27600.00000000