Имена столбцов SQL и их упорядочение по дате - PullRequest
0 голосов
/ 12 сентября 2018

У меня есть таблица как таковая:

date       | page
-----      |-----
2018-01-01 | good
2018-01-01 | good
2018-01-01 | good
2018-01-01 | bad
2018-01-02 | good

Как организовать по значениям в столбце страницы по дате, таким образом:

date       | good | bad
-----      |------|----
2018-01-01 | 3    | 1
2018-01-02 | 1    | 0

Ответы [ 4 ]

0 голосов
/ 12 сентября 2018

Используя pivot таблицу как,

 create table #pivot(date date,page varchar(20))
 insert into #pivot values
 ('2018-01-01','good')
 ,('2018-01-01','good')
 ,('2018-01-01','good')
 ,('2018-01-01','bad')
 ,('2018-01-02','good')

 select date,good,bad from(  
 select date, page from #pivot 
 ) f
 pivot
( count(page) for page in (good,bad)
) p 
0 голосов
/ 12 сентября 2018

Это может сработать, просто добавьте регистр внутри функции суммы:

select date, 
       sum( case when page = 'good' then 1 else 0 end) as good, 
       sum( case when page = 'bad' then 1 else 0 end ) as bad 
from table t 
group by date
0 голосов
/ 12 сентября 2018

Я не уверен, какую платформу вы используете, но если это в Oracle, это будет делать то же самое.

select date, sum(decode(page,'good',1,0)) as good, sum(decode(page,'bad',1,0)) as bad              
from table t                                                                       
group by date;
0 голосов
/ 12 сентября 2018

Вам необходимо условное агрегация:

select date, 
       sum(case when page = 'good' then 1 else 0 end) as good, 
       sum(case when page = 'bad' then 1 else 0 end) as bad
from table t
group by date;

Однако MySQL имеет сокращение для этого:

select date, 
       sum( page = 'good') as good, 
       sum( page = 'bad' ) as bad
from table t
group by date;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...