gpt4 book ai didi

sql - 如何获取最频繁的值SQL

转载 作者:行者123 更新时间:2023-12-05 00:41:05 24 4
gpt4 key购买 nike

我有一个表 Orders(id_trip, id_order)、表 Trip(id_hotel, id_bus, id_type_of_trip) 和表 Hotel(id_hotel, name)。

我想获取表 Orders 中最常入住酒店的名称。

SELECT hotel.name from Orders
JOIN Trip
on Orders.id_trip = Trip.id_hotel
JOIN hotel
on trip.id_hotel = hotel.id_hotel
FROM (SELECT hotel.name, rank() over (order by cnt desc) rnk
FROM (SELECT hotel.name, count(*) cnt
FROM Orders
GROUP BY hotel.name))
WHERE rnk = 1;

最佳答案

分布中的“最常出现的值”是统计学中的一个独特概念,具有技术名称。它被称为分布的模式。 Oracle 有 STATS_MODE() 函数。 https://docs.oracle.com/cd/B19306_01/server.102/b14200/functions154.htm

例如,使用标准 SCOTT 架构中的 EMP 表,select stats_mode(deptno) from scott.emp 将返回 30 - 员工最多的部门编号。 (30 是部门“名称”或编号,不是该部门的员 worker 数!)

在你的情况下:

select stats_mode(h.name) from (the rest of your query)

注意:如果两个或多个酒店被绑定(bind)为“最常”,则 STATS_MODE() 将返回其中之一(非确定性)。如果您需要所有绑定(bind)的值,您将需要一个不同的解决方案 - 一个很好的例子是在文档中(上面链接)。这是 Oracle 对统计概念的理解和实现中的一个记录缺陷。

关于sql - 如何获取最频繁的值SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41043647/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com