Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Не могу понять как решить подскажите / 25 сообщений из 25, страница 1 из 1
19.11.2015, 12:16
    #39107594
symmetry
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу понять как решить подскажите
Есть какая то таблица(t1) в которой есть поля id, user_id. Нужно сосчитать сколько юзеров зашло новых и сколько старых.
Пример:
(id,user_id)
(1,4)
(2,6)
(3,8)
(4,4)
(5,9)
(6,4)
(7,6)
(8,6)
(9,11)
(10,12)
Должно вывести так:
(Первичные_юзеры, Вторичные_юзеры)
(4,6)
...
Рейтинг: 0 / 0
19.11.2015, 12:23
    #39107599
sagengu
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу понять как решить подскажите
symmetry, и вас не возможно понять.

как вы определяете кто новый юзер а кто старый?
первичный и вторичные это кто? новый и старый?
зашло за какой то промежуток?

дали уравнение без неизвестной и с малым количеством данных.
перефразируйте вопрос более информативно.
...
Рейтинг: 0 / 0
19.11.2015, 12:28
    #39107605
symmetry
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу понять как решить подскажите
sagengu, если в поле user_id он присутствует один раз значит он первичный(то есть заходил один раз) например как юзер 8,9,11,12, а другие юзеры заходили несколько раз их в Вторичные.
Зашло за промежуток мне просто нужно узнать сколько заходило с начала 2015 года то есть where date>='01.01.2015'
...
Рейтинг: 0 / 0
19.11.2015, 12:39
    #39107622
Щукина Анна
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу понять как решить подскажите
symmetry,

почитать про count(...) | count(distinct ...)
...
Рейтинг: 0 / 0
19.11.2015, 12:43
    #39107626
p2.
p2.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу понять как решить подскажите
symmetry,

group by по пользователю + group by по count=1
...
Рейтинг: 0 / 0
19.11.2015, 12:45
    #39107629
symmetry
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу понять как решить подскажите
Да я уже побывал и у меня не получилось, может конечно я не так делал я ещё новичок. Но суть в чем - когда берёшь SELECT user_id, COUNT(*) то дальше можно сравнивать если каунт=1 то плюсуем первичного если <>1 то значит вторичный плюсуем но если берём SELECT id, user_id, COUNT(*) тогда не работает. Подскажите способ? Я пишу функцию коротая возвращает таблицу.
...
Рейтинг: 0 / 0
19.11.2015, 12:50
    #39107635
p2.
p2.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу понять как решить подскажите
гипотетический sql:
select count(user_id), count(user_id) filter(where count(*) = 1)
from таблица
group by user_id
...
Рейтинг: 0 / 0
19.11.2015, 12:59
    #39107650
symmetry
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу понять как решить подскажите
...
Рейтинг: 0 / 0
19.11.2015, 13:28
    #39107695
symmetry
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу понять как решить подскажите
По count я сделал и так получилось но сказали надо именно чтобы был каждый id задействован а не как у меня я смотрю если коунт=1 то первичный ELSE вторичный.
...
Рейтинг: 0 / 0
19.11.2015, 13:36
    #39107708
symmetry
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу понять как решить подскажите
получается у меня 40353+17622=57975 строк задействовано а должно быть 97652
...
Рейтинг: 0 / 0
19.11.2015, 14:06
    #39107754
Lonepsycho
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу понять как решить подскажите
symmetry,

тогда у вас наверное анализы не те. догадка конечно, но думаю вы несчитаете юзверей которые зарегистрированы, но ещё не логинились. такое возможно если считаете из лога подключений, а не юзерс лефт джон логинс...
...
Рейтинг: 0 / 0
19.11.2015, 14:12
    #39107765
symmetry
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу понять как решить подскажите
Да там не обязательно может стоять user_id мне нужно в общем посчитать брав каждый id и затем смотреть есть ли во второй колонке(допустим это user_id) такое же значения. Если таких значения больше одного значит это точно не первичный.
Или тут совсем другой алгоритм надо?
...
Рейтинг: 0 / 0
19.11.2015, 15:06
    #39107829
sagengu
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу понять как решить подскажите
symmetry, какими таблицами вы можете оперировать? напишите их сюда со всеми колонками.
...
Рейтинг: 0 / 0
19.11.2015, 15:26
    #39107860
symmetry
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу понять как решить подскажите
Ну по сути только одна нужна. t1(id, client_id, create_date)
Тут я отсортировал по client_id и видно что некоторые были несколько раз 62(3раза), 67(2раза), 73(2 раза), 99(2раза) а другие 74,79,94,97 один раз. В итоге нужно по каждому полю id смотреть какой клиент первичный или повторный.
Из этого куска должно получится такой ответ:
(Первичный, Повторный)
( 4 , 9 )
Как получить такое?
...
Рейтинг: 0 / 0
19.11.2015, 15:32
    #39107869
sagengu
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу понять как решить подскажите
symmetryКак получить такое?
в упор не вижу количество входов? куда потерялось это условие?

сегодня на всех магнитные бури действуют?
...
Рейтинг: 0 / 0
19.11.2015, 15:42
    #39107885
symmetry
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу понять как решить подскажите
sagengu, как понять количество входов? у меня в таблице такого вообще нет.
Может я как то не так объясняю допустим смотри первый id 7206520 у него клиент_ид=62 мы смотрим существуют ли ещё такие поля по id где клиент_ид тоже равен 62. Да в итоге мы видим что есть значит нам нужно записать результат по даным id 720652 client_id 62 в допустим Вторичные. Записали смотрим дальше также 62 значит тоже в Вторичные. И так далее до id 696279 client_id 74 смотрим больше такого клиента_ид нету значит заносим его в первичные. В итоге должна вывестись таблица:
(Первичные, Вторичные)
(____4____ ,____9____ )
...
Рейтинг: 0 / 0
19.11.2015, 15:42
    #39107886
p2.
p2.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу понять как решить подскажите
symmetry(Первичный, Повторный)назвать вещи своими именами: единичный, все.
шаблон запроса я привел. пилите, шура, пилите. или платите за работу.
...
Рейтинг: 0 / 0
19.11.2015, 15:44
    #39107887
symmetry
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу понять как решить подскажите
К сожалению у нас видимо старая версия постгреса там нет filter.
...
Рейтинг: 0 / 0
19.11.2015, 16:04
    #39107913
zasandator
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу понять как решить подскажите
symmetry,

тынц

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
select id, user_id,
  case qty
    when 1 then 'первичные'
    else 'вторичные'
  end
from
(
  select *, count(*) over (partition by user_id) as qty
  from tvoya_tablica
) t



так не?

ps: сори если напутал с синтаксисом, все таки занимаюсь MS-SQL ))))). Хотя оконные функции везде одинаковые
...
Рейтинг: 0 / 0
19.11.2015, 16:05
    #39107919
sagengu
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу понять как решить подскажите
это ваши слова из первого поста.
авторНужно сосчитать сколько юзеров зашло новых и сколько старых.

я прежде чем создать тему с вопросом, гуглю, стараюсь составить вопрос более понятно.
большая часть вопросов отпадает после 10 минут работы над хорошо поставленным вопросом, решения оказываются очевидными.
кто то говорил "Хорошо поставленный вопрос уже половина ответа."
...
Рейтинг: 0 / 0
19.11.2015, 16:25
    #39107953
symmetry
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу понять как решить подскажите
zasandator, Спасибо вам но к сожалению он первичных почему то делает не всех)
Видно что 74,79,94, и 97 должны быть первичными. Голова уже болит от этой непонятности.

sagengu, Да я понимаю я теоретически знаю как решить а практически не получается как надо.
...
Рейтинг: 0 / 0
19.11.2015, 16:43
    #39107982
zasandator
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу понять как решить подскажите
symmetryzasandator, Спасибо вам но к сожалению он первичных почему то делает не всех)
Видно что 74,79,94, и 97 должны быть первичными. Голова уже болит от этой непонятности.

sagengu, Да я понимаю я теоретически знаю как решить а практически не получается как надо.

Да Вы что? Ну была ссылка в предыдущем посте с примерами на постгри оконными функциями. ну и для отладки запрос такой посмотрите

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
select id, user_id,
  qty,
  case qty
    when 1 then 'первичные'
    else 'вторичные'
  end
from
(
  select *, count(*) over (partition by user_id) as qty
  from tvoya_tablica
) t



В частности поле qty - покажет Вам сколько раз user_id встретился в таблице.
...
Рейтинг: 0 / 0
19.11.2015, 16:44
    #39107986
zasandator
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу понять как решить подскажите
symmetryzasandator, Спасибо вам но к сожалению он первичных почему то делает не всех)
Видно что 74,79,94, и 97 должны быть первичными. Голова уже болит от этой непонятности.

sagengu, Да я понимаю я теоретически знаю как решить а практически не получается как надо.

Ну и...

select * from tvoya_tablica where user_id in (74,79,94,97) order by user_id

выдаст 4 строки всего? ))))
...
Рейтинг: 0 / 0
19.11.2015, 16:47
    #39107991
Lonepsycho
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу понять как решить подскажите
symmetry,

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
SELECT count(d.user_id) filter(WHERE d.cnt = 1) AS primary, 
       count(d.user_id) /*filter(WHERE d.cnt > 1)*/ AS secondary 
FROM (
  SELECT 
    v.user_id,
    count(v.id) AS cnt 
  FROM 
    (VALUES 
      (1, 4),
      (2, 6),
      (3, 8),
      (4, 4),
      (5, 9),
      (6, 4),
      (7, 6),
      (8, 6),
      (9, 11),
      (10, 12)
    ) AS v (id, user_id)
  GROUP BY
    v.user_id
) AS d

без окон, без дверей...
...
Рейтинг: 0 / 0
20.11.2015, 08:24
    #39108509
symmetry
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу понять как решить подскажите
Спасибо всем разобрался) Там если что было не 4 и не 10 строк я же сказал это пример там в итоге 100к строк гдет.
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Не могу понять как решить подскажите / 25 сообщений из 25, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]