|
|
|
| данный запрос выведет даты с количеством посещений в день, посещение type=1
date | users_count
2011-03-01 | 5
2011-03-02 | 7
2011-03-03 | 10
SELECT
DATE(`datetime`) AS date,
COUNT(distinct user_id) as users_count
FROM
pz_event
WHERE type=1
GROUP BY
date
|
нельзя ли вывести еще и кол. просмотров определенной страницы (users_count2) которые тоже фиксируеются (type=2) но их может и не быть на определенную дату
date | users_count | users_count2
2011-03-01 | 5 | 0
2011-03-02 | 7 | 3
2011-03-03 | 10 | 2 | |
|
|
|
|
|
|
|
для: dimaxz
(11.03.2011 в 08:51)
| | Вложенными подзапросами в FROM можно сформировать две таблицы для type = 1 и type = 2 и объединить их при помощи LEFT JOIN.
PS Если составление такого запроса вызывает затруденение, приложите небольшой дамп за пару дней, чтобы можно было воспроизвести ситуацию и отладить запрос. | |
|
|
|
|
|
|
|
для: cheops
(11.03.2011 в 11:23)
| | Таблица:
CREATE TABLE pz_event(
id INT(11) NOT NULL AUTO_INCREMENT,
user_id INT(11) DEFAULT NULL,
`datetime` DATETIME DEFAULT NULL,
type INT(11) DEFAULT NULL,
description VARCHAR(255) DEFAULT NULL,
PRIMARY KEY (id),
INDEX IX_pz_event_datetime (`datetime`),
INDEX IX_pz_event_user_id (user_id),
INDEX UK_pz_event_type (type)
)
ENGINE = MYISAM
AUTO_INCREMENT = 501
AVG_ROW_LENGTH = 77
CHARACTER SET utf8
COLLATE utf8_general_ci;
|
Данные:
INSERT INTO pz_event VALUES
(363, 91, '2011-03-10 08:56:00', 3, NULL),
(364, 248, '2011-03-10 08:57:00', 1, ''),
(365, 184, '2011-03-10 09:07:00', 1, ''),
(384, 184, '2011-03-10 09:26:00', 1, ''),
(408, 56, '2011-03-10 09:54:00', 1, ''),
(409, 56, '2011-03-10 09:55:00', 3, NULL),
(410, 173, '2011-03-10 09:56:00', 1, ''),
(412, 173, '2011-03-10 10:03:00', 1, ''),
(413, 173, '2011-03-10 10:04:00', 3, NULL),
(414, 0, '2011-03-10 10:10:00', 3, NULL),
(415, 173, '2011-03-10 10:10:00', 3, NULL),
(416, 173, '2011-03-10 10:12:00', 1, ''),
(417, 184, '2011-03-10 10:17:00', 1, ''),
(423, 184, '2011-03-10 10:21:00', 3, NULL),
(424, 184, '2011-03-10 10:21:00', 1, ''),
(425, 184, '2011-03-10 10:22:00', 3, NULL),
(426, 4, '2011-03-10 10:23:00', 3, NULL),
(427, 4, '2011-03-10 10:25:00', 3, NULL),
(428, 202, '2011-03-10 10:30:00', 1, ''),
(446, 74, '2011-03-10 14:43:00', 1, ''),
(447, 87, '2011-03-10 14:45:00', 3, NULL),
(448, 87, '2011-03-10 14:52:00', 3, NULL),
(466, 123, '2011-03-11 08:36:00', 1, ''),
(467, 4, '2011-03-11 09:09:00', 3, NULL),
(468, 4, '2011-03-11 09:15:00', 3, NULL),
(469, 4, '2011-03-11 09:15:00', 3, NULL),
(470, 4, '2011-03-11 09:18:00', 3, NULL),
(471, 119, '2011-03-11 09:27:00', 1, ''),
(472, 119, '2011-03-11 09:31:00', 3, NULL),
(476, 184, '2011-03-11 10:19:00', 1, ''),
(477, 184, '2011-03-11 10:20:00', 3, NULL),
(496, 260, '2011-03-11 11:22:00', 1, ''),
(497, 260, '2011-03-11 11:23:00', 3, NULL),
(498, 260, '2011-03-11 11:24:00', 3, NULL),
(499, 243, '2011-03-11 11:26:00', 1, ''),
(500, 260, '2011-03-11 11:27:00', 3, NULL);
|
| |
|
|
|
|
|
|
|
для: dimaxz
(11.03.2011 в 11:36)
| | Можно поступить следующим образом
SELECT
hit.date AS `date`,
hit.users_count AS hits,
host.users_count AS hosts
FROM
(SELECT
DATE(`datetime`) AS `date`,
COUNT(DISTINCT user_id) AS users_count
FROM pz_event
WHERE `type`=1
GROUP BY `date`) AS `hit`
LEFT JOIN
(SELECT
DATE(`datetime`) AS `date`,
COUNT(DISTINCT user_id) AS users_count
FROM pz_event
WHERE `type`=3
GROUP BY `date`) AS `host`
ON (hit.date = host.date)
|
| |
|
|
|
|
|
|
|
для: cheops
(11.03.2011 в 11:51)
| | ухты диствительно то что надо! спасибо! | |
|
|
|
|