您的位置:

Hive between and详解

一、区间筛选

BETWEEN AND语句是Hive中常用的区间筛选语句,可以用来筛选出所有在指定区间内的数据。

SELECT column1, column2, ...
FROM table_name
WHERE column_name BETWEEN value1 AND value2;

其中,column_name为要筛选的列名,value1和value2为这个区间的范围。需要注意的是,在使用区间查询时,两个端点的数据也会被纳入查询结果。

我们可以使用BETWEEN AND语句来查询一个表中所有的年龄在25到40之间的用户:

SELECT *
FROM user_info
WHERE age BETWEEN 25 AND 40;

二、日期时间

BETWEEN AND语句同样适用于时间和日期类型。我们可以使用它来筛选指定时间段内的数据。

我们先来创建一个包含了订单日期和订单金额的表。其中,订单日期使用DATE类型,订单金额使用FLOAT类型。

CREATE TABLE orders
(
    order_date DATE,
    order_amount FLOAT
);

然后我们向表中插入一些数据:

INSERT INTO orders VALUES ('2022-01-01', 100.00);
INSERT INTO orders VALUES ('2022-01-02', 120.00);
INSERT INTO orders VALUES ('2022-01-03', 80.00);
INSERT INTO orders VALUES ('2022-01-04', 150.00);
INSERT INTO orders VALUES ('2022-01-05', 200.00);
INSERT INTO orders VALUES ('2022-01-06', 300.00);
INSERT INTO orders VALUES ('2022-01-07', 250.00);
INSERT INTO orders VALUES ('2022-01-08', 180.00);
INSERT INTO orders VALUES ('2022-01-09', 130.00);
INSERT INTO orders VALUES ('2022-01-10', 90.00);

现在,我们可以使用BETWEEN AND语句来查询2022年1月1日到1月5日之间的订单总金额:

SELECT SUM(order_amount) AS total_amount
FROM orders
WHERE order_date BETWEEN '2022-01-01' AND '2022-01-05';

结果为620.00。

三、其他用法

BETWEEN AND语句还有一些其他用法。

例如,我们可以使用它来筛选一个表中某个字符列值在某个字符范围内的数据。

我们创建一个表保存了一些英文单词:

CREATE TABLE words
(
    word VARCHAR(50)
);

然后向表中插入一些数据:

INSERT INTO words VALUES ('apple');
INSERT INTO words VALUES ('banana');
INSERT INTO words VALUES ('cat');
INSERT INTO words VALUES ('dog');
INSERT INTO words VALUES ('elephant');
INSERT INTO words VALUES ('fox');
INSERT INTO words VALUES ('grape');

使用BETWEEN AND语句查询以b、c或d开头的单词:

SELECT word
FROM words
WHERE word BETWEEN 'b' AND 'd';

结果为:

banana
cat
dog

此外,BETWEEN AND语句还可以用在数值型和字符型数据类型中。

四、小结

Hive的BETWEEN AND语句是查询数据时经常使用的一种方法。它可以针对不同类型的数据类型进行区间查询,提高了查询的效率,减少了手动筛选的工作量。