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
Sql 获取Postgres表中列的最常见的星期几_Sql_Postgresql_Select - Fatal编程技术网

Sql 获取Postgres表中列的最常见的星期几

Sql 获取Postgres表中列的最常见的星期几,sql,postgresql,select,Sql,Postgresql,Select,我想看看一周中最常见的一天,小部件在我的Postgres数据库中被创建 这是我所能得到的,但它返回的是一个平均值(3.744…),而不是一个表示一周中最常见的一天的整数。有人知道我该如何改进吗 SELECT AVG(start_day) AS start_day FROM (SELECT date_part('dow', created_at) AS start_day FROM widgets) TMP; 按日期分组,按计数排序(降序)?(我知道C#中的LINQ是什么,但我不想假

我想看看一周中最常见的一天,小部件在我的Postgres数据库中被创建

这是我所能得到的,但它返回的是一个平均值(3.744…),而不是一个表示一周中最常见的一天的整数。有人知道我该如何改进吗

SELECT AVG(start_day) AS start_day
FROM (SELECT date_part('dow', created_at) AS start_day
      FROM widgets) TMP;

按日期分组,按计数排序(降序)?(我知道C#中的LINQ是什么,但我不想假设我可以正确使用SQL…)我质疑您为什么选择使用子查询,但我发现您可以避免重复计算星期几。@KenGeis在一个查询中使用相同的函数调用两次并不意味着它会被计算两次,查询计划器比这更聪明。使用子查询生成更容易理解的代码IMHO,我们两个答案的查询计划完全相同:。您先前的解决方案(减去明显的错误)稍微慢一些,但非常具有可比性。是的,我应该说您避免重复星期几的声明表达式。
SELECT date_part('dow', created_at) AS start_day
  FROM widgets
 GROUP BY date_part('dow', created_at)
 ORDER BY COUNT(*) DESC
 LIMIT 1
SELECT start_day, count(*)
FROM (
  SELECT date_part('dow', created_at) AS start_day
  FROM widgets) sub
GROUP BY 1
ORDER BY 2 DESC
LIMIT 1;