如何计算蜂巢中不包括假期的工作日数?
How to count number of working days excluding holiday in Hive?
我能够在 MySQL 中找到两个日期之间的差异,但是相同的查询在配置单元中不起作用。
我有一个 table,其中有一个假期日期列表。
SELECT bd.*,
(SELECT COUNT(*) FROM holiday WHERE h_date BETWEEN bd.t_date AND bd.start_date) as holiday_count
FROM biz_date as bd
配置单元中的错误:
Error: Error while compiling statement: FAILED: ParseException line 2:1 cannot recognize input near 'SELECT' 'COUNT' '(' in expression specification (state=42000,code=40000)
这就是您要找的吗?
SELECT t_date,start_date, holiday_count from biz_date as bd
INNER JOIN (SELECT COUNT(*) as holiday_count FROM holiday,biz_date as bd WHERE h_date BETWEEN bd.t_date AND bd.start_date) as holiday_count
ON 1=1
输出:
+-------------+-------------+----------------+--+
| t_date | start_date | holiday_count |
+-------------+-------------+----------------+--+
| 2018-12-31 | 2019-02-01 | 2 |
+-------------+-------------+----------------+--+
完整测试代码:
create table temp.biz_date (
t_date string
,start_date)
stored as parquet location '/temp.db/biz_date' tblproperties("parquet.compression=SNAPPY";
create table temp.biz_date(
t_date CHAR(10)
, start_date CHAR(10) )
stored as parquet location '/temp.db/biz_date' tblproperties("parquet.compression=SNAPPY") ;
INSERT INTO TABLE temp.holiday VALUES ('2019-01-01'),('2019-01-05');
INSERT INTO TABLE temp.biz_date VALUES ('2018-12-31','2019-02-01');
我能够在 MySQL 中找到两个日期之间的差异,但是相同的查询在配置单元中不起作用。
我有一个 table,其中有一个假期日期列表。
SELECT bd.*,
(SELECT COUNT(*) FROM holiday WHERE h_date BETWEEN bd.t_date AND bd.start_date) as holiday_count
FROM biz_date as bd
配置单元中的错误:
Error: Error while compiling statement: FAILED: ParseException line 2:1 cannot recognize input near 'SELECT' 'COUNT' '(' in expression specification (state=42000,code=40000)
这就是您要找的吗?
SELECT t_date,start_date, holiday_count from biz_date as bd
INNER JOIN (SELECT COUNT(*) as holiday_count FROM holiday,biz_date as bd WHERE h_date BETWEEN bd.t_date AND bd.start_date) as holiday_count
ON 1=1
输出:
+-------------+-------------+----------------+--+
| t_date | start_date | holiday_count |
+-------------+-------------+----------------+--+
| 2018-12-31 | 2019-02-01 | 2 |
+-------------+-------------+----------------+--+
完整测试代码:
create table temp.biz_date (
t_date string
,start_date)
stored as parquet location '/temp.db/biz_date' tblproperties("parquet.compression=SNAPPY";
create table temp.biz_date(
t_date CHAR(10)
, start_date CHAR(10) )
stored as parquet location '/temp.db/biz_date' tblproperties("parquet.compression=SNAPPY") ;
INSERT INTO TABLE temp.holiday VALUES ('2019-01-01'),('2019-01-05');
INSERT INTO TABLE temp.biz_date VALUES ('2018-12-31','2019-02-01');