1

Я хочу использовать эту таблицу для хранения билетов в PostgreSQL.Подсчитайте все строки по статусу и дню

CREATE TABLE TICKET(
ID INTEGER NOT NULL, 
TITLE TEXT, 
STATUS INTEGER, 
LAST_UPDATED DATE, 
CREATED DATE 
) 
; 

Я использую статус столбца, чтобы установить другой статус (1, 2, 3, 4). Как я могу считать все билеты по статусу и дню одним SQL-запросом?

Я хотел бы, чтобы получить конечный результат, например, как простой массив чисел:

32 31 23 42 9.11.215 
31 21 13 22 10.11.215 
3 3 2 43 11.11.215 
+0

Пожалуйста, объясните лучше свой результат –

+0

Не связанный с вашим вопросом, но как в мире у вас есть 879 вопросов, 21 золотые значки, 103 серебра, 211 бронза, но только 47 репутация ...? – Siyual

+0

Я хочу получить этот вывод, потому что я помещу его в объект Java и покажу его в BarChart. –

ответ

1

Вы можете сделать это с условной агрегации, которая будет объединять отдельные строки в 1 агрегированного ряд:

SELECT t.created, 
     COUNT(CASE WHEN t.status = '1' THEN 1 END) as cnt_status1, 
     COUNT(CASE WHEN t.status = '2' THEN 1 END) as cnt_status2, 
     COUNT(CASE WHEN t.status = '3' THEN 1 END) as cnt_status3, 
     COUNT(CASE WHEN t.status = '4' THEN 1 END) as cnt_status4 
FROM ticket t 
GROUP BY t.created 
+0

Я получаю 'ERROR: столбец t.created_date не существует'. У меня есть столбец 'created' not' created_date' –

+0

Смешанный, почему вы его просто не изменили? В любом случае это исправлено @PeterPenzov – sagi

+0

Теперь я получаю 'ERROR: оператор не существует: text = integer LINE 2: COUNT (CASE WHEN t.status = 1 THEN 1 END) as cnt_statu ...' –