Это во многом зависит от того, что вы имеете в виду «объединить»:
Один ряд
Вы можете использовать Abhik's answer или что-то похожее на это :
SELECT firstHalf.count, secondHalf.count
FROM
(SELECT COUNT(1) as count FROM Users WHERE joined BETWEEN '2014-01-01' AND '2014-06-30') firstHalf,
(SELECT COUNT(1) as count FROM Users WHERE joined BETWEEN '2014-07-01' AND '2014-12-31') secondHalf;
Несколько Ряды
Вы можете использовать UNION ALL
для выполнения запросов, в то же время и объединяющие результаты:
SELECT * FROM
(SELECT COUNT(1) as count FROM Users WHERE joined BETWEEN '2014-01-01' AND '2014-06-30') firstHalf
UNION ALL
(SELECT COUNT(1) as count FROM Users WHERE joined BETWEEN '2014-07-01' AND '2014-12-31') secondHalf;
Вопрос Вы не спрашивали
Это звучит как вы хотите получить подсчеты для полу-произвольных диапазонов дат. Вот что такое GROUP BY
в сочетании с MySQL Date Operations для. Это приведет к подсчету всех пользователей, которые присоединились с начала 2010 года, сгруппированы по годам и какая половина года (0 или 1) они подписали.
SELECT YEAR(joined) as year, MONTH(joined)/6 AS yearHalf, COUNT(*)
FROM Users
WHERE joined >= '2010-01-01'
GROUP BY YEAR(joined), MONTH(joined)/6;
Используя формат запроса выше, вы можете легко изменить, как мелко-зернистой ваши отсчеты, являются ли они сгруппированы по годам и т.д.