sql - 在 postgresql 中使用 group by 和 order
问题描述
询问:
select "fightEventId", fe."from" , f.status
from
location_time_slot lts
inner join
fight_events fe on lts."fightEventId" = fe.id
inner join
fights f on lts.id = f."slotId"
where
f.status = 'CONFIRMED'
and 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"
order by fe."from"
limit 100
offset 0;
它产生了这个:
fightEventId|from |status |
------------+-------------------+---------+
2|2021-07-02 15:00:00|CONFIRMED|
2|2021-07-02 15:00:00|CONFIRMED|
2|2021-07-02 15:00:00|CONFIRMED|
2|2021-07-02 15:00:00|CONFIRMED|
17|2021-07-03 15:00:00|CONFIRMED|
17|2021-07-03 15:00:00|CONFIRMED|
1|2021-07-03 15:00:00|CONFIRMED|
1|2021-07-03 15:00:00|CONFIRMED|
1|2021-07-03 15:00:00|CONFIRMED|
1|2021-07-03 15:00:00|CONFIRMED|
1|2021-07-03 15:00:00|CONFIRMED|
1|2021-07-03 15:00:00|CONFIRMED|
1|2021-07-03 15:00:00|CONFIRMED|
1|2021-07-03 15:00:00|CONFIRMED|
1|2021-07-03 15:00:00|CONFIRMED|
1|2021-07-03 15:00:00|CONFIRMED|
1|2021-07-03 15:00:00|CONFIRMED|
1|2021-07-03 15:00:00|CONFIRMED|
1|2021-07-03 15:00:00|CONFIRMED|
1|2021-07-03 15:00:00|CONFIRMED|
我需要的是展示那些"fightEventId"
有超过2次CONFIRMED
战斗的s。目前所有记录都以正确的方式排序,所以我期望的结果是:
fightEventId|
------------+
2|
1|
我该怎么做呢?每次我尝试时,我都会出错或订单被破坏。
至于项目中使用的 DBMS,它是 PostgreSQL,但我写的是 MySQL,因为我很确定有两种解决方案可以同时使用。
附言
这个查询来自我正在使用的 ORM,所以请不要与那些true
s 和false
s 混淆。:)
解决方案
您只需使用聚合和having
:
select fightEventId
from t
where status = 'CONFIRMED'
group by fightEventId
having count(*) > 2;
在您的查询中:
select fightEventId
from location_time_slot lts join
fight_events fe
on lts."fightEventId" = fe.id join
fights f on lts.id = f."slotId"
where f.status = 'CONFIRMED' and
(now() at time zone 'utc' >= fe."from" and now() at time zone 'utc' <= fe."to"
) or
now() at time zone 'utc' <= fe."to" or
now() at time zone 'utc' > fe."to"
group by fightEventId
having count(*) > 2
order by max(fe."from");
推荐阅读
- amazon-web-services - AWS - 我们如何向特定服务器发送请求
- ios - ProjectName-Swift 问题 - 找不到“ASAuthorizationControllerPresentationContextProviding”的协议声明
- spring-boot - 在 Spring Boot 中使用 FFmpegBuilder 从 JPEG 图像创建的视频对资源的要求非常高
- git - Git文件夹名称在本地更改而不是推送到远程
- python - 连接到 Redis Sentinel 集群时使用 redis-py 的 MasterNotFoundError
- amazon-web-services - 从 cloudformation aws 中的不同区域访问 SecretKey
- jquery - 当一个模式关闭并立即打开另一个模式时,如何解决 Bootstrap 4 中的滚动问题?
- java - 了解 Java 中同步块与 volatile 变量的原子性、可见性和重新排序
- arrays - 使用注册表卸载字符串 powershell 卸载
- javascript - HTML Select Dropdown ID 未传递给 Javascript 函数 getelementbyid 值为 null