Группировка диапазонов дат в строке - PullRequest
0 голосов
/ 26 января 2011

Я пытаюсь вывести ежедневное, еженедельное, ежемесячное и годовое количество заказов и сумму этих заказов между этими временными диапазонами.На данный момент я придумал следующее.Это длинное, но просто копирование и вставка одного и того же оператора, в который просто внесены небольшие изменения для группировки по году, месяцу, неделе и дню.Это идеальный результат, обеспечивающий год, месяц, неделю, ежедневный счет и сумму транзакций, которые могут быть выведены соответствующим образом.Однако это только для одного типа заказа.В таблице заказов есть два типа заказов, онлайн и терминальные, и в идеале я бы хотел вывести оба типа в одном запросе, а не делать запросы к базе данных несколько раз.

У меня есть два вопроса, которые у меня возникаютпроблемы с.Во-первых, есть ли более простой способ достичь того же результата?Я не хочу слишком усложнять это, потому что приводит ко второму вопросу, потому что некоторые заказы различаются, и я хотел бы, чтобы результат отображал как онлайн-заказы, так и терминальные заказы, если я просто скопирую и СОЮЗУ код, который у меня уже есть, с добавленным 'WHERE Terminal = 1 'из-за объединения результаты одинаковы.Есть ли способ вывести два набора выходных данных в одном запросе?

Я, вероятно, слишком усложняю то, к чему стремлюсь, но заранее благодарю вас за любые советы или указатели.

1 Ответ

0 голосов
/ 26 января 2011

вы можете попробовать как этот пример, используя GROUP BY WITH ROLLUP

mysql> SELECT year, country, product, SUM(profit)
    -> FROM sales
    -> GROUP BY year, country, product WITH ROLLUP;

Результат будет

+------+---------+------------+-------------+
| year | country | product    | SUM(profit) |
+------+---------+------------+-------------+
| 2000 | Finland | Computer   |        1500 |
| 2000 | Finland | Phone      |         100 |
| 2000 | Finland | NULL       |        1600 |
| 2000 | India   | Calculator |         150 |
| 2000 | India   | Computer   |        1200 |
| 2000 | India   | NULL       |        1350 |
| 2000 | USA     | Calculator |          75 |
| 2000 | USA     | Computer   |        1500 |
| 2000 | USA     | NULL       |        1575 |
| 2000 | NULL    | NULL       |        4525 |
| 2001 | Finland | Phone      |          10 |
| 2001 | Finland | NULL       |          10 |
| 2001 | USA     | Calculator |          50 |
| 2001 | USA     | Computer   |        2700 |
| 2001 | USA     | TV         |         250 |
| 2001 | USA     | NULL       |        3000 |
| 2001 | NULL    | NULL       |        3010 |
| NULL | NULL    | NULL       |        7535 |
+------+---------+------------+-------------+

Для Rerence с ROLLUP

Ваш запрос довольно большой, поэтому я решил привести еще один пример!

...