postgresql - 不能在 PostgreSQL 中按日期排序
问题描述
这是一个请求,它获取所有那些确认战斗次数超过 4 的战斗事件,它也做了一些特定的时间选择,但没关系(看起来很奇怪,因为这个请求是由我正在使用的 ORM 执行的,所以它只是在它们应该在的地方放入一些布尔值)。
SELECT
"fightEventId"
FROM location_time_slot AS lts
WHERE "fightId" IN (
SELECT
f.id
FROM fights AS f
WHERE f.status = 'CONFIRMED'
) AND "fightEventId" IN (
SELECT
fe.id
FROM fight_events AS fe
WHERE true AND (
NOW() at time zone 'utc' >= fe.from AND NOW() at time zone 'utc' <= fe.to
) OR true AND NOW() at time zone 'utc' <= fe.to
OR false AND NOW() at time zone 'utc' > fe.to
)
GROUP BY "fightEventId"
HAVING
COUNT("fightId") > 4
LIMIT 1
OFFSET 0;
我还想通过location_time_slot
表中存在的名为“from_date”的参数对该输出进行排序(排序)。
如果我这样添加:
SELECT
"fightEventId"
FROM location_time_slot AS lts
WHERE "fightId" IN (
SELECT
f.id
FROM fights AS f
WHERE f.status = 'CONFIRMED'
) AND "fightEventId" IN (
SELECT
fe.id
FROM fight_events AS fe
WHERE true AND (
NOW() at time zone 'utc' >= fe.from AND NOW() at time zone 'utc' <= fe.to
) OR true AND NOW() at time zone 'utc' <= fe.to
OR false AND NOW() at time zone 'utc' > fe.to
)
GROUP BY "fightEventId", from_date
HAVING
COUNT("fightId") > 4
ORDER BY from_date DESC
LIMIT 1
OFFSET 0;
查询执行,但它什么都不返回,只返回一个 id。
好像我以错误的方式分组?
解决方案
如果我要猜测的话,我会说,一旦您添加分组 by from_date
,那么您就没有任何符合您count() > 4
条件的组。
要对此进行测试,请选择所有列:
select
"fightEventId"
, from_date
, count("fightEventId")
from ....
然后删除您的HAVING
子句以查看在应用该子句之前得到什么结果HAVING
。
推荐阅读
- acumatica - Acumatica PXCheckUnique - 如何在错误消息上显示重复订单 Nbr
- javascript - 如何使用正则表达式 javascript 在换行后获得结果
- python - 在 XML 文件中查找文本并输出元素
- php - 代码点火器如何访问类中的公共变量。
- ruby-on-rails - 如何使用嵌套形式的值设置外键?
- css - iphone Mozilla上没有显示谷歌支付按钮
- c# - 如何从字符串中提取起始字符?
- java - 将控制台输出发送到日志文件
- http - 离子 3 标头请求未在 post 方法中发送
- scala - 区分 Google 的默认图片和上传图片