- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу

Тренды маркетинга в 2024 году: мобильные продажи, углубленная аналитика и ИИ
Экспертная оценка Адмитад
Оксана Мамчуева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Здравствуйте,
помогите пожалуйста сформировать SQL-запрос.
Таблица такой структуры:
id | paymentType | paymentDate | paymentSumm
Данные:
1 | Webmoney | 03-11-2011 | 50
2 | Безнал-ый | 02-11-2011 | 100
3 | Webmoney | 01-11-2011 | 30
4 | Безнал-ый | 31-10-2011 | 20
5 | Webmoney | 01-10-2011 | 50
Нужно вывести помесячную статистику полученных платежей, общее количество платежей и сумму переведенных за текущий месяц по Webmoney денег.
Т.е. такое:
11-2011 | 3 | 80
10-2011 | 2 | 50
Пытаюсь сделать JOIN-ом, но не работает как надо. Подправьте меня, что не так:
COUNT() и SUM()
Вам ни о чём не говорит? Есть такие полезные функции... их даже в запрос можно вставлять.
COUNT() и SUM()
Вам ни о чём не говорит? Есть такие полезные функции... их даже в запрос можно вставлять.
Простите, но не могу сообразить. Если правильно понял, вы предлагаете делать подзапрос? Вроде: COUNT( (SELECT * ...) )?
e_moon добавил 28.11.2011 в 13:52
Простите, но не могу сообразить. Если правильно понял, вы предлагаете делать подзапрос? Вроде: COUNT( (SELECT * ...) )?
SUM(s.paymentType="Webmoney") AS paySumm
Спасибо огромное, кажется направили в нужное русло!
http://mysql.ru/docs/man/Counting_rows.html
ну и
http://www.google.ru/search?client=opera&rls=ru&q=MYSQL+SUM()&sourceid=opera&ie=utf-8&oe=utf-8
Там всё в примерах.
http://mysql.ru/docs/man/Counting_rows.html
ну и
http://www.google.ru/search?client=opera&rls=ru&q=MYSQL+SUM()&sourceid=opera&ie=utf-8&oe=utf-8
Там всё в примерах.
И все-таки не получается как надо.
SUM(s.paymentType="Webmoney") возвращает количество строк, где платеж шел по Webmoney, но не сумму поступивших средств!
а может нужен paymentSumm?
Chukcha добавил 28.11.2011 в 14:53
и goup by делать не только поdateDiff , но и по платежной системе
а может нужен paymentSumm?
Chukcha добавил 28.11.2011 в 14:53
и goup by делать не только поdateDiff , но и по платежной системе
Да, нужен SUMM(paymentSumm), но только где paymentType="Webmoney".
А GROUP BY же как? В течение месяца идет по нескольку платежей через один из способов оплаты!?.
Короче говоря, прихожу к тому что надо все-таки делать в два запроса.
И все-таки не получается как надо.
SUM(s.paymentType="Webmoney") возвращает количество строк, где платеж шел по Webmoney, но не сумму поступивших средств!
sum(if(s.paymentType='Webmoney',paymentSumm,0))
edogs добавил 28.11.2011 в 15:20
Да, нужен SUMM(paymentSumm), но только где paymentType="Webmoney".
А GROUP BY же как? В течение месяца идет по нескольку платежей через один из способов оплаты!?.
Короче говоря, прихожу к тому что надо все-таки делать в два запроса.
group by dateDiff , s.paymentType
select DATE_FORMAT(`paymentDate`, '%Y.%c') as month, count(*), sum(`paymentSumm`) from paymentslist where `paymentType`='Webmoney' group by month order by month desc
select DATE_FORMAT(`paymentDate`, '%Y.%c') as month, count(*), sum(`paymentSumm`) from paymentslist where `paymentType`='Webmoney' group by month order by month desc
Минус такого запроса в том, что в пролете оказываются те месяцы, где не было ни одного платежа через Webmoney.
e_moon добавил 28.11.2011 в 16:16
sum(if(s.paymentType='Webmoney',paymentSumm,0))
edogs добавил 28.11.2011 в 15:20
group by dateDiff , s.paymentType
Здесь я получаю список всех способов оплаты, месяц не уникальный при таком способе GROUP BY.
Т.е. результат такой:
11-2011 | 2 | 80
11-2011 | 1 | 100
10-2011 | 1 | 50
10-2011 | 1 | 20
А вот такой вывод получить не получается никак:
месяц -> количество платежей всего (всеми способами) -> сумма (только по WebMoney)
Т.е. такого вида:
11-2011 | 3 | 80
10-2011 | 2 | 50
Если нет дат в самой таблице, то и понятно, что вы
и получите
Если хотите получить помесячно, то нужно использовать доп. таблицу с месяцами-годами. Понятное дело, что такой таблицы у вас нет, но ее можно сэмулировать, а затем эту таблицу соединить слева уже с таблицей платежей
Вот здесь создают календарь
creative-territory.net/post/view/id/31/