|
|
|
| Сортировка клиентов по максимальному количеству покупок. Мой рабочий код:
SELECT *,`pocup`.`com` as `now_com`, (SELECT count(`com`) from `pocup` where `com`= `now_com`) as `ccs` FROM `pocup` GROUP BY `id` ORDER BY max(`ccs`) DESC;
|
Это я подсчитываю сколько у клиентов купленного товара.
(SELECT count(`com`) from `pocup` where `com`= `now_com`) as `ccs`
|
Таблица клиентов (pocup), которые что-то купили.
В итоге получается такая табличка:
id trade(товар) now_com(клиент) ccs(кол. Покупок клиента)
2 5 66 3
1 4 66 3
3 4 66 3
4 3 33 2
5 5 33 2
6 2 1 1
Вопрос: Можно его оптимизировать? Думаю, что можно было попроще сделать, но как не знаю. | |
|
|
|
|
|
|
|
для: adebizii
(19.11.2012 в 12:42)
| | Что хранится в полях com и id?
Зачем вам вообще группировка по id? Может лучше сразу сгруппировать по клиенту? | |
|
|
|
|
|
|
|
для: cheops
(19.11.2012 в 21:42)
| | com - это номер клиента, а id это номер покупки.
Делаю группировку, чтобы работал COUNT для подсчета покупок, а потом сортирую по максимальному количеству покупок, а по сути мне группировка не нужна. | |
|
|
|
|
|
|
|
для: adebizii
(20.11.2012 в 12:03)
| | Если я правильно понял задачу, то у вас запрос не правильный.
Если id это номер покупки, а группируете вы по id, то внутри группы у вас не 1 клиент со своими покупками, а клиенты, совершавшие покупку id.
Вам нужно количество покупок у каждого клиента?
А вот так, что, не так?
SELECT com, count(*)co FROM pocup GROUP BY com ORDER BY co DESC
|
| |
|
|
|
|
|
|
|
для: Sfinks
(20.11.2012 в 14:39)
| | Я хочу получить список покупок и упорядочить его по уменьшению количества купленного товара, также мы должны видеть, какой товар был куплен.
Пример:
user 1:
---товар 1
---товар 2
---товар 4
user 3:
---товар 1
---товар 2
user 4:
---товар 2
|
| |
|
|
|
|
|
|
|
для: adebizii
(21.11.2012 в 09:43)
| | Тогда
SELECT com, id, count(*)co
FROM pocup
GROUP BY com, id
ORDER BY com ASC, co DESC
|
| |
|
|
|
|
|
|
|
для: Sfinks
(21.11.2012 в 23:01)
| | Выводит:
com id co
4 1 1
5 4 1
5 5 1
5 6 1
6 2 1
6 3 1
|
это не работает
и кстати у меня id это не номер товара, это номер покупки | |
|
|
|
|
|
|
|
для: adebizii
(22.11.2012 в 09:15)
| | > и кстати у меня id это не номер товара, это номер покупки
Тогда вам в битву экстрасенсов. Мы тут на угадайках не специализируемся.
Хотите получить ответ - научитесь задавать вопрос. А правильная форма вопроса в по составлению SQL-запроса - описание таблиц и их полей + описание связей между таблицами + описание результата требуемого запроса. И если запрос действительно сложный, то + кусок дампа таблиц и результат, который вы предполагаете получить по этому дампу. | |
|
|
|
|
|
|
|
для: Sfinks
(22.11.2012 в 09:43)
| |
SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for `pocup`
-- ----------------------------
DROP TABLE IF EXISTS `pocup`;
CREATE TABLE `pocup` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`x` int(11) DEFAULT NULL,
`com` int(11) DEFAULT NULL,
`podcom` int(11) DEFAULT NULL,
`trade` int(11) DEFAULT NULL,
`sum` int(11) DEFAULT NULL,
`win` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=14 DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of pocup
-- ----------------------------
INSERT INTO `pocup` VALUES ('1', '8', '4', '9', '1162', '0', '2');
INSERT INTO `pocup` VALUES ('2', '6', '6', '0', '1185', '0', '2');
INSERT INTO `pocup` VALUES ('3', '6', '6', '0', '1186', '0', '2');
INSERT INTO `pocup` VALUES ('4', '6', '5', '0', '1187', '0', '2');
INSERT INTO `pocup` VALUES ('5', '6', '5', '0', '1189', '0', '2');
INSERT INTO `pocup` VALUES ('6', '6', '5', '0', '1191', '0', '2');
|
| |
|
|
|
|
|
|
|
для: adebizii
(22.11.2012 в 13:44)
| | up | |
|
|
|