首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法正确分组(SQL)

无法正确分组(SQL)
EN

Stack Overflow用户
提问于 2012-10-17 19:20:34
回答 3查看 1.4K关注 0票数 1

我有一个SQL查询,它当前显示表HOTEL中预订了$260到$350之间的酒店的所有人。我正在使用ORACLE

代码语言:javascript
复制
SELECT guest.guest_name "GUEST NAME", 
       Count(guest.guest_no), 
       guest.guest_no   "GUEST           NUMBER", 
       room.r_price     "ROOM PRICE" 
FROM   room, 
       guest, 
       booking 
WHERE  r_price >= 260 
       AND r_price <= 350 
       AND guest.guest_no = booking.guest_no 
GROUP  BY guest.guest_no, 
       guest.guest_name, 
       room.room_price 
ORDER  BY guest.guest_name; 

我想我可以只按GUEST.GUEST_NAME分组(所以它将所有的计数放在一个名字下,而不是两个客人的名字)。

编辑:查询的当前结果如下所示:

代码语言:javascript
复制
    GUEST NAME    COUNT   GUEST_NO R_PRICE
    Jenny Freeman   2   G003    260
    Jenny Freeman   2   G003    295
    Jenny Freeman   2   G003    310
    Martin Ferguson 3   G006    260
    Martin Ferguson 3   G006    295
    Martin Ferguson 3   G006    310
    Paul Happy  3   G002    260
    Paul Happy  3   G002    295
    Paul Happy  3   G002    310
    Steve Kirkwood  3   G005    260
    Steve Kirkwood  3   G005    295
    Steve Kirkwood  3   G005    310
    Tina Duncan 2   G001    260
    Tina Duncan 2   G001    295
    Tina Duncan 2   G001    310
    Vanessa Horton  1   G007    260
    Vanessa Horton  1   G007    295
    Vanessa Horton  1   G007    310

但我希望是这样的:

代码语言:javascript
复制
    GUEST NAME    COUNT   GUEST_NO R_PRICE
    Jenny Freeman   6   G003    260
    Martin Ferguson 9   G006    310
    Paul Happy  9   G002    310
    Steve Kirkwood  9   G005    260
    Tina Duncan 6   G001    310
    Vanessa Horton  3   G007    260
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-10-17 20:29:50

嗯,我想你只需要在group by语句中进行更改,rest对我来说是可以的。只是不要在Group By声明中包含房间价格,我认为如果我没有回答您的问题,这会给您带来问题……

代码语言:javascript
复制
 GROUP BY GUEST.GUEST_NO,
          GUEST.GUEST_NAME

代码语言:javascript
复制
 MAX(R_PRICE) 
票数 1
EN

Stack Overflow用户

发布于 2012-10-17 19:24:08

您是否忘记加入ROOM_NO (或其他字段)预订的房间?

我已经从group by中删除了房间价格,查询现在将返回唯一的客人和他们预订的房间数量,价格在给定的范围内,以及每个客人的最高价格。

代码语言:javascript
复制
SELECT
    GUEST.GUEST_NAME "GUEST NAME",
    GUEST.GUEST_NO "GUEST NUMBER",
    COUNT(*) "CNT",
    MAX(R.R_PRICE) "ROOM PRICE"
FROM BOOKING B
    inner join ROOM R on R.ROOM_NO = B.ROOM_NO
    inner join GUEST G on G.GUEST_NO  = B.GUEST_NO
WHERE R.R_PRICE>=260 and R.R_PRICE<=350
GROUP BY G.GUEST_NO, G.GUEST_NAME
ORDER BY G.GUEST_NAME;
票数 0
EN

Stack Overflow用户

发布于 2012-10-17 19:26:16

您可以尝试执行以下sql查询:

代码语言:javascript
复制
SELECT GUEST.GUEST_NAME "GUEST NAME", COUNT(GUEST.GUEST_NO), GUEST.GUEST_NO "GUEST NUMBER", ROOM.R_PRICE "ROOM PRICE"
FROM ROOM, GUEST,BOOKING
WHERE ROOM.R_PRICE>=260
AND ROOM.R_PRICE<=350
AND GUEST.GUEST_NO = BOOKING.GUEST_NO
GROUP BY GUEST.GUEST_NAME
ORDER BY GUEST.GUEST_NAME;
票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12933160

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档