如何选择价格最高的商品?

时间:2015-04-16 11:05:18

标签: mysql sql oracle

正如您所看到的,我正在使用SQL Developer并尝试从表中获取一些数据。

我正试图以最大的价格拿出这个项目,但不知道如何管理它。 我正在尝试的价格

SELECT MAX(价格) 从价格

但当我最高价格为350欧元时,我得到95欧元。

有人可以帮助我,我会得到最大的价格(来自表格价格)和项目名称(来自表格项目)吗?

编辑:这是我的表格,如果这有助于你

INSERT INTO ITEM VALUES (1, 'Item one', 1);
INSERT INTO ITEM VALUES (2, 'Item two', 1);
INSERT INTO ITEM VALUES (3, 'Item three', 2);
INSERT INTO ITEM VALUES (4, 'Item four', 2);
INSERT INTO ITEM VALUES (5, 'Item five', 3);
INSERT INTO ITEM VALUES (6, 'Item six', 3);

/* CREATE TABLE ITEM(
ID INTEGER NOT NULL,
NAME VARCHAR2(30) NOT NULL,
TK_ORG INTEGER NOT NULL
); */

INSERT INTO PRICE VALUES (1, 'normal', '50 €', 1);
INSERT INTO PRICE VALUES (2, 'special offer', '45 €', 1);
INSERT INTO PRICE VALUES (3, 'normal', '80 €', 2);
INSERT INTO PRICE VALUES (4, 'special offer', '150 €', 2);
INSERT INTO PRICE VALUES (5, 'normal', '40 €', 3);
INSERT INTO PRICE VALUES (6, 'special offer', '25 €', 3);
INSERT INTO PRICE VALUES (7, 'normal', '70 €', 4);
INSERT INTO PRICE VALUES (8, 'special offer', '45 €', 4);
INSERT INTO PRICE VALUES (9, 'normal', '95 €', 5);
INSERT INTO PRICE VALUES (10, 'special offer', '320 €', 5);

/* CREATE TABLE PRICE(
ID INTEGER NOT NULL,
PRICE_TYPE VARCHAR2(50) NOT NULL,
PRICE VARCHAR2(10) NOT NULL,
TK_ITEM INTEGER NOT NULL
); */

3 个答案:

答案 0 :(得分:4)

您似乎将价格存储为字符串而不是数字。在MySQL中,您可以使用静默转换来获得所需内容:

SELECT MAX(price + 0)
FROM price;

在Oracle中,对于此示例,您可以这样做:

SELECT MAX(to_number(replace(price, '€', '')))
FROM price;

如果您有更多货币,正则表达式会更灵活。

答案 1 :(得分:2)

首先,将列类型更改为整数。现在,我假设,它是VARCHAR或TEXT。当它按第一个符号排序时,当然是9> 3,这就是你得到奇怪结果的原因。从行的内容中删除€并将其移动到另一列。

答案 2 :(得分:0)

您可以从价格中移除€并将其转换为整数。 添加€意味着您的价格不是数字。我们将它转​​换为数字,我们得到最大结果

 SELECT MAX(CONVERT(REPLACE(pricing,' €',''),UNSIGNED INTEGER)) FROM price