Запрос, чтобы получить количество данных для конкретного клиента со всеми другими данными из таблицы - PullRequest
0 голосов
/ 29 августа 2018

Моя структура таблицы выглядит следующим образом:

group_id | cust_id | ticket_num


60    |   12    |   1
60    |   12    |   2
60    |   12    |   3
60    |   12    |   4
60    |   30    |   5
60    |   30    |   6
60    |   31    |   7
60    |   31    |   8
65    |   02    |   1
  • Я хочу получить все данные для group_id = 60 и найти количество ticket_num для каждого клиента в этой группе. Мой вывод должен быть таким *

cust_id | ticket_count | ticket_num


12    |      4      |   1
12    |             |   2
12    |             |   3
12    |             |   4
30    |      2      |   5
30    |             |   6
31    |      2      |   7
31    |             |   8

Я пробовал этот запрос

SELECT gd.cust_id, Count(gd.cust_id),gd.ticket_num 
FROM Group_details gd 
WHERE gd.group_id = 65 
GROUP BY gd.cust_id;

но этот запрос не работает. Пожалуйста, помогите мне с запросом.

Спасибо заранее.

Ответы [ 2 ]

0 голосов
/ 29 августа 2018

Похоже, вам нужны функции стандарта ANSI / ISO row_number() и count() в качестве оконной функции:

select gd.cust_id, count(*) over (partition by gd.cust_id) as num_tickets,
       row_number() over (order by gd.cust_id) as ticket_seqnum
from group_details gd
where gd.group_id = 60;
0 голосов
/ 29 августа 2018

использовать агрегат и подзапрос

   select t2.*,t1.ticket_num from Group_details t1
   inner join
   ( 
   SELECT gd.cust_id, Count(gd.ticket_num) as ticket_count 
   FROM Group_details gd where gd.group_id = 60 
   GROUP BY gd.cust_id 
   ) t2 on t1.cust_id=t2.cust_id

http://sqlfiddle.com/#!9/dd718b/1

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...