从计算值返回两个最高值

时间:2014-03-02 19:56:11

标签: mysql sql sql-server

我在下面链接了以下表格:

http://i.stack.imgur.com/UlxDe.png

我想列出为菜单项选择菜单项的所有时间,这些菜单项的每份价格具有2个最高值。每份价格按单位价格除以估计份数计算。对于每个选定的项目,应显示itemno,eventid,roomid,交付时间和单位数。

我的查询如下:

 SELECT M.ITEMNO, S.EVENTID, S.ROOMID, S.DELIVERY_TIME, S.UNIT_COUNT
 FROM MENUITEM M, SELECTEDITEM S
 WHERE MAX(M.UNIT_PRICE / M.EST_SERVINGS);

这是我能提出的唯一一个问题,而且它还远远不够。

1 个答案:

答案 0 :(得分:1)

首先,您需要将表连接在一起。有点猜测连接键是什么,但让我们说ItemNo对于两个表都是通用的。然后,您希望按比例对行进行排序,并选择两个最高值:

SELECT M.ITEMNO, S.EVENTID, S.ROOMID, S.DELIVERY_TIME, S.UNIT_COUNT
FROM MENUITEM M JOIN
     SELECTEDITEM S
     ON M.ITEMNO = S.ITEMNO
ORDER BY M.UNIT_PRICE / M.EST_SERVINGS DESC
LIMIT 2;

limit 2是MySQL的语法。在SQL Server中,您将改为使用SELECT TOP 2

编辑:

在SQL Server中,语法为:

SELECT TOP 2 M.ITEMNO, S.EVENTID, S.ROOMID, S.DELIVERY_TIME, S.UNIT_COUNT
FROM MENUITEM M JOIN
     SELECTEDITEM S
     ON M.ITEMNO = S.ITEMNO
ORDER BY M.UNIT_PRICE / M.EST_SERVINGS DESC;