正如您所看到的,我正在使用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
); */
答案 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