Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: не могу сочинить запрос с использованием group by
Форумы портала PHP.SU » Серверное администрирование » Администрирование БД » не могу сочинить запрос с использованием group by

Страниц (1): [1]
 

1. sabriel - 04 Октября, 2011 - 10:26:44 - перейти к сообщению
Здравствуйте, прошу помощи в составлении запроса. имеется таблица вида
CODE (SQL):
скопировать код в буфер обмена
  1.  
  2. +--------+----------+-----------+---------------------+----+----------------------+
  3. | IDUser | AllIn    | AllOut    | DTime               | id | service10000_nowplan |
  4. +--------+----------+-----------+---------------------+----+----------------------+
  5. |  34348 |   530253 |   1165477 | 2011-03-23 14:38:05 |  1 |                 129 |
  6. |  34330 |    71304 |    136754 | 2011-03-23 14:38:05 |  2 |                 129 |
  7. |  34325 |        0 |      8608 | 2011-03-23 14:38:05 |  3 |                 130 |
  8. |  34310 |   705123 |   5905735 | 2011-03-23 14:38:05 |  4 |                140 |
  9. |  34297 | 76732944 |  60848616 | 2011-03-23 14:38:05 |  5 |                 130 |
  10. |  34296 |     1221 |      6069 | 2011-03-23 14:38:05 |  6 |                 131 |
  11. |  34293 |   319134 |   5919484 | 2011-03-23 14:38:05 |  7 |                 140 |
  12. |  34289 |  5353280 |   2814296 | 2011-03-23 14:38:05 |  8 |                 130 |
  13. |  34288 | 12818655 | 191865571 | 2011-03-23 14:38:05 |  9 |                 131 |
  14. |  34287 |   177246 |    167516 | 2011-03-23 14:38:05 | 10 |                 129 |
  15. +--------+----------+-----------+---------------------+----+----------------------+
  16.  


про каждого абонента запись появляется примерно раз в пять минут.
мне необходимо выполнить запрос что бы узнать
сколько абонентов скачало на тарифном плане 129 10GB сколько 20 сколько 30 и тд

сейчас делаю так

CODE (SQL):
скопировать код в буфер обмена
  1. SELECT a.service10000_nowplan, a.iduser,round(sum(a.AllOut)/1073741824) AS IN_GB1 ,round(sum(a.AllOut)/1073741824,-1) AS IN_GBround FROM billing.traffic_per_user AS a
  2. WHERE a.service10000_nowplan =129 AND a.dtime>='2011-09-27'
  3. GROUP BY a.iduser
  4. HAVING round(sum(a.AllIn)/1073741824,-1)>10
  5. ORDER BY round(sum(a.AllIn)/1073741824,-1)



то есть сумму allOut я округляю до 10ков гигабайт. но это на каждый интервал гигов (10,20,30) и тд необходимо выполнять отдельный запрос и так на каждый тариф.

Вот собственно хотелось бы узнать, быть может существует способо вывести сразу необходимую информацию ?
то есть ввожу в запросе тариф, и получаю что 10г скачало 230чел, 20г - 40чел и тд.
заранее спасибо

 

Powered by ExBB FM 1.0 RC1