Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
postgresql如何显示每天日期的最频繁值_Sql_Postgresql - Fatal编程技术网

postgresql如何显示每天日期的最频繁值

postgresql如何显示每天日期的最频繁值,sql,postgresql,Sql,Postgresql,我对一个应该返回每个日期最多出现的值的查询有一个问题 +------------+------------------+ | Date | value | +------------+------------------+ | 2020-01-01 | Programmer | | 2020-01-02 | Technician | | 2020-01-03 | Business Analyst | +------------+-----

我对一个应该返回每个日期最多出现的值的查询有一个问题

+------------+------------------+
|    Date    |      value       |
+------------+------------------+
| 2020-01-01 | Programmer       |
| 2020-01-02 | Technician       |
| 2020-01-03 | Business Analyst |
+------------+------------------+
到目前为止,我已经做到了

select count(headline) as asd, publication_date, employer -> 'name' as dsa from jobhunter
group by publication_date,dsa
ORDER BY publication_date  DESC
但它显示的是2020-12-31 19:06:00,而不仅仅是YYYY-MM-DD 你知道怎么解决这个问题吗? 测试数据:

create table tbl (
    id serial primary key,
    row_datetime TIMESTAMP,
    row_val VARCHAR(60)
);

insert into tbl (row_datetime, row_val) values ('2021-01-01 00:00:00', 'a');
insert into tbl (row_datetime, row_val) values ('2021-01-01 01:00:00', 'a');
insert into tbl (row_datetime, row_val) values ('2021-01-01 02:00:00', 'b');
insert into tbl (row_datetime, row_val) values ('2021-01-02 00:00:00', 'a');
insert into tbl (row_datetime, row_val) values ('2021-01-02 01:00:00', 'b');
insert into tbl (row_datetime, row_val) values ('2021-01-02 02:00:00', 'b');
查询示例:

SELECT dt, val, cnt
FROM (
   SELECT dt, val, cnt, ROW_NUMBER() OVER (PARTITION BY dt ORDER BY cnt DESC) AS row_num
   FROM (
      SELECT dt, val, COUNT(val) AS cnt
      FROM (
         SELECT DATE(row_datetime) AS dt, row_val AS val FROM tbl
      ) AS T1 GROUP BY dt, val
   ) AS T2
) AS T3
WHERE row_num=1
ORDER BY dt ASC

您还可以自定义查询以优化性能、获取更多字段等。

太棒了,完全符合我的要求!