ВЫБЕРИТЕ из sql 2 столбца в 1 таблице по дате - PullRequest
1 голос
/ 12 апреля 2020

У меня есть некоторые проблемы с моим оператором выбора, использующим 2 столбца из 1 таблицы и сгруппированных данных по дате. Данные, которые у меня есть, как этот экран:

My data

и результат, который я хочу, как:

expected result

любой может помочь в это?

Ответы [ 2 ]

0 голосов
/ 12 апреля 2020

Вы можете использовать right() для извлечения нужного месяца из даты

select
    right(date, 6) as month,
    sum(case when change > 0 then 1 else 0 end) as up_times,
    sum(case when change < 0 then 1 else 0 end) as down_times,
    stock_id
from yourTable
group by
    right(date, 6),
    stock_id
0 голосов
/ 12 апреля 2020

Вы можете выполнить условное агрегирование:

select 
    date_format(date, '%Y-%m-01') date_month,
    sum(`close` > `open`) uptime,
    sum(`close` < `open`) downtime,
    sum(`close` = `open`) equaltime
    stock_id
from mytable
group by date_month, stock_id

Обратите внимание, что я добавил дополнительный запрос для подсчета дней, где close равно open.

...