#php #mysql
#php #mysql
Вопрос:
У меня есть много записей базы данных, каждая из которых содержит значение.
Я хочу показать некоторую статистику относительно этих значений, поэтому я должен быть в состоянии сказать:
- сколько записей (строк) имеют значение от 0 до 5,
- сколько записей (строк) имеют значение от 6 до 10,
- сколько записей (строк) имеют значение от 11 до 20,
- сколько записей (строк) имеют значение больше 20.
(значения выше приведены только в качестве примера)
Допустим, у меня будет примерно 6-7 интервалов, по которым я хочу сгруппировать значения. Могу ли я сделать это в одном запросе MySQL? Если да, то как я могу получить доступ к сгруппированным значениям с помощью photoshop PHP после?
Спасибо!
Редактировать:
Похоже, что запрос на самом деле сложнее. У меня есть 2 столбца (val1 и val2). Я хочу, чтобы запрос подсчитал, сколько элементов имеют значения val1 / val2 (val1, разделенное на val2) между интервалами…
Комментарии:
1. БОЖЕ, я думаю, мне следует сделать перерыв … :)) Я имел в виду php lol.
Ответ №1:
SELECT
SUM(col BETWEEN 0 AND 5) AS 0_to_5,
SUM(col BETWEEN 6 AND 10) AS 6_to_10,
и т.д. и т.п.
re: ваша правка:
SELECT
SUM(val1/val2 BETWEEN 0 AND 5) AS 0_to_5,
SUM(val1/val2 BETWEEN 6 AND 10) AS 6_to_10,
Комментарии:
1. 1 Отсюда всего лишь простой шаг — сделать снимок экрана с выводимыми значениями и вставить их в photoshop.
2. @Cristy: Я знаю. Я пошутил 🙂
3. Я знаю, ты пошутил, я разговаривал с Фрэнком; Я кое-что добавил к запросу :))
Ответ №2:
Если диапазоны, на которые вы разбиваете подсчеты, имеют одинаковый размер, вы можете использовать оператор modulo:
SELECT MOD(col, 5), COUNT(col)
FROM ...
WHERE ...
GROUP BY MOD(col, 5)
который автоматически группировал бы все в тип 5 для каждой категории и обрабатывал неограниченный диапазон категорий.
Если диапазоны имеют разный размер, то вам придется сгенерировать большую конструкцию типа case / if-then-else для проверки каждого диапазона по отдельности.