2016-12-27 6 views
0

У меня есть таблица с транзакциями и заявление, которое выдаёт наиболее используемые кредитные карты. AMEX, VISA ...наиболее часто встречающееся событие

SELECT CARDBRAND, 
    count(*) as cardused 
from INFO c 
left join paytb t 
    on c.CONT_ID = t.CONT_ID 
GROUP BY CARDBRAND 
ORDER BY 2 desc; 

Теперь я хочу, чтобы добавить столбец с MERCHNAME из магазинов, которые были наиболее часто встречаются в сделке с Creditcard:

CARDBRAND CARDUSED  MERCHNAME 
---------------------------------------- 
AMEX   182345   Gasstation 
VISA   70943   .... 
+1

пожалуйста, покажите схему таблицы – DCR

ответ

1
SELECT CARDBRAND 
    ,count(*) as cardused 
    ,MERCHNAME 
FROM INFO c 
LEFT JOIN paytb t 
    on c.CONT_ID = t.CONT_ID 
GROUP BY CARDBRAND, 
     MERCHNAME 
ORDER BY count(*) desc; 

предложение: В этом случае всегда рекомендуется использовать ColumnName или функцию в предложении ORDERBY, а не номер столбца, чтобы избежать путаницы.

+0

Это выдающий все merchnames с наиболее часто используемой карты. Я хотел бы иметь все карточные карточки с самым посещаемым магазином. – bastel

+0

Как @DCR сказал: «Пожалуйста, покажите схему таблицы» – chandler

+0

http://pastebin.com/FiL8b6Nf – bastel

0

Во-первых, ваш правильный запрос должен быть:

select c.cardbrand, count(t.cont_id) as cardused 
from info c left join 
    paytb t 
    on c.cont_id = t.cont_id 
group by c.cardbrand; 

В противном случае, вы никогда не получите «0» для брендов карты, которые не используются.

Для получения информации о торговом, вы можете использовать окно функции:

select cardbrand, total_cardused, merchant 
from (select c.cardbrand, t.merchant, count(t.cont_id) as cardused, 
      sum(count(t.cont_id)) over (partition by c.cardbrand) as total_cardused, 
      row_number() over (partition by c.cardbrand order by count(t.cont_id) desc) as seqnum 
     from info c left join 
      paytb t 
      on c.cont_id = t.cont_id 
     group by c.cardbrand, t.merchant 
    ) cm 
where seqnum = 1 
group by c.cardbrand; 
+0

Он говорит SQLCODE = -206, ОШИБКА. C.CARDBRAND НЕ ДЕЙСТВИТЕЛЬНО В КОНТЕКСТ, ГДЕ ИСПОЛЬЗУЕТСЯ – bastel

Смежные вопросы