sql查询以获取每个seat_count收入最高的饭店餐桌

问题描述

|| 我有一个看起来像这样的架构:
 Tables
   table_id
   seat_count

 Orders
   order_id
   table_id
   meal_id

 Meals
   meal_id
   price
我正在尝试获得每个座位数收入最高的表,即
 |idTable| |income| |seat_count|
     2        50$        5
     3        60$        4
     4        40$        3
     10       80$        2
我得到的最接近的是此查询:
 SELECT tables.table_id,SUM(income),tables.seat_count 
FROM   (SELECT tables.table_id,tables.seat_count,COUNT(orders.meal_id) * meals.price AS income 
        FROM   meals 
               INNER JOIN (tables 
                           INNER JOIN orders 
                             ON tables.table_id = orders.table_id) 
                 ON meals.meal_id = orders.meal_id 
        GROUP  BY tables.table_id,meals.price 
        ORDER  BY COUNT(orders.meal_id) * meals.price DESC) 
GROUP  BY tables.table_id,tables.seat_count 
ORDER  BY SUM(income) DESC  
但是我被困住了,它返回诸如以下的记录:
 table_id,income,seat_count
   1         40$     5
   2         30$     5
   4         20$     4
(即重复的seat_counts),我也不知道如何摆脱它。     

解决方法

        我认为这将为您提供所需的信息,尽管如果两个表的座位数和收入水平相同,它将同时显示两者。我在Access 2003中对您的表结构模型进行了尝试(这就是为什么它在括号中具有奇怪的联接语法)。
select sub1.table_id,sub1.seat_count,sub1.income
from
(
    SELECT Tables.table_id,Tables.seat_count,Sum(Meals.price) AS Income
    FROM (Tables INNER JOIN Orders ON Tables.table_id = Orders.table_id) INNER JOIN Meals ON Orders.meal_id = Meals.meal_id
    GROUP BY Tables.table_id,Tables.seat_count
) sub1
inner join 
(
    select seat_count,max(Income) as Maxincome
    from
    (
        SELECT Tables.table_id,Sum(Meals.price) AS Income
        FROM (Tables INNER JOIN Orders ON Tables.table_id = Orders.table_id) INNER JOIN Meals ON Orders.meal_id = Meals.meal_id
        GROUP BY Tables.table_id,Tables.seat_count
    ) sub
    group by seat_count
) sub2 on (sub1.seat_count = sub2.seat_count and sub1.income = sub2.maxincome);
    

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...