MySQL вычислить процент в том же столбце

0

В приведенной ниже таблице, как бы я подсчитал, какой процент представляет собой стоимость еды на общую стоимость для каждого клиента? Глядя на умножение "Продовольственной стоимости" на 100, затем разделите "Общая стоимость". Например, клиент 1 вернул бы 39,5.

+------------+------------+--------+
| customerId |  category  | total  |
+------------+------------+--------+
|          1 | Food Cost  |  65031 |
|          1 | Total Cost | 164637 |
|          2 | Food Cost  |  72031 |
|          2 | Total Cost | 264637 |
+------------+------------+--------+


SELECT round(total * 100 / (SELECT total FROM table where category = "Total 
Cost" and customerId = 1), 2) as Total FROM table where category = "Food 
Cost" and customerId = 1;

Это даст мне результат, который мне нужен для клиента 1, но если я хочу вернуть обоих клиентов, мне нужно будет удалить clientId = "", и это вернет ошибку MySQL "Код ошибки: 1242. Подзапрос возвращает больше этой 1 строки".

  • 0
    Подождите ... ваш стол уже хранит общую стоимость? Это правильно?
Теги:

2 ответа

0
Лучший ответ

Вы можете использовать условную агрегацию здесь, чтобы получить информацию о еде и общей стоимости для каждого клиента:

SELECT
    customerId,
    100.0 * MAX(CASE WHEN category = 'Food Cost' THEN total END) /
    MAX(CASE WHEN category = 'Total Cost' THEN total END) AS percentage
FROM yourTable
GROUP BY customerId;

Изображение 174551

демонстрация

0

Я закончил тем, что использовал это

SELECT ROUND(food.total * 100 / total.total, 1) AS 'Food Total'
FROM table AS food 
INNER JOIN table as total on food.customerId = total.customerId
WHERE food.category = 'Food Cost'
AND total.category = 'Total Cost';

Ещё вопросы

Сообщество Overcoder
Наверх
Меню