33-Hive SQL DML语法之查询数据-2

1. 解决hive中注释中文乱码的问题

bash 复制代码
-- 注意了需要在sqlyog中执行下面的代码!!!
use hive3;
show tables;

alter table hive3.COLUMNS_V2 modify column COMMENT varchar(256) character set utf8;
alter table hive3.TABLE_PARAMS modify column PARAM_VALUE varchar(4000) character set utf8;
alter table hive3.PARTITION_PARAMS modify column PARAM_VALUE varchar(4000) character set utf8 ;
alter table hive3.PARTITION_KEYS modify column PKEY_COMMENT varchar(4000) character set utf8;
alter table hive3.INDEX_PARAMS modify column PARAM_VALUE varchar(4000) character set utf8;

2.授课hql语句

bash 复制代码
--  2025-08-11 授课

select  * from t_usa_covid19;

-- 1.根据州进行state  分组统计 统计每个州有多少个县 county
-- select  count(county) from t_usa_covid19
-- where  count_date="2021-01-28"
-- group by state;

select  count(county) from t_usa_covid19
 where  count_date="2021-01-28"
 group by state;


-- 想看一下统计的结果是属于哪一个州的
select state,count(county) as county_nums from t_usa_covid19
 where  count_date="2021-01-28"
 group by state;



-- 2.想看一下每个县的死亡病例,很简单 ,刚才的语句添加一个字段就行了????
-- 下面的hql会报错
-- Error while compiling statement: FAILED:
-- SemanticException [Error 10025]: Line 1:42 Expression not in GROUP BY key 'deaths'
select state,count(county) as county_nums,deaths from t_usa_covid19
 where  count_date="2021-01-28"
 group by state;

-- 解决方案
select state,count(county) as county_nums,sum(deaths) from t_usa_covid19
 where  count_date="2021-01-28"
 group by state;

--3、having
--统计2021-01-28死亡病例数大于10000的州
--count_date string,
   -- county     string,
   -- state      string,
   -- fips       int,
   -- cases      int,
   -- deaths     int

select state,sum(deaths) from t_usa_covid19
where  count_date="2021-01-28" and sum(deaths)>10000
group by state;
-- 结论:where 语句中不能使用聚合函数 语法报错


select state,sum(deaths) from t_usa_covid19
where  count_date="2021-01-28"
group by state
having sum(deaths)>10000 ;


--  上面的sql计算了两次,性能不高 ,我们改写sql让它计算一次 性能能提高
select state,sum(deaths) as cnts  from t_usa_covid19
where  count_date="2021-01-28"
group by state
having cnts>10000 ;


-- order by
-- 4.根据确诊病例数升序,查询返回结果
select * from t_usa_covid19 order by cases;

-- 根据确诊病例数降序显示
select * from t_usa_covid19 order by cases desc ;

-- 根据死亡病例数倒序排列 ,查询返回加州每个县的结果
select * from t_usa_covid19
where state="California" order by deaths desc;


-- 5. 加州返回结果集 从第一行开始 共三行
select  * from  t_usa_covid19
where count_date="2021-01-28"
and state="California" limit 0,3;-- 分页建议这样写

-- 得出结论  数据索引是从0开始的

select  * from  t_usa_covid19
where count_date="2021-01-28"
and state="California" limit 3;

select  state,sum(deaths) as cnts  from  t_usa_covid19
where count_date="2021-01-28"
group by state
having cnts >10000
limit 2;

---  2025-08-11 PM
--table1: 员工表
CREATE TABLE employee(
   id int,
   name string,
   deg string,
   salary int,
   dept string
 ) row format delimited
fields terminated by ',';

--table2:员工家庭住址信息表
CREATE TABLE employee_address (
    id int,
    hno string,
    street string,
    city string
) row format delimited
fields terminated by ',';

--table3:员工联系方式信息表
CREATE TABLE employee_connection (
    id int,
    phno string,
    email string
) row format delimited
fields terminated by ',';


select * from liushao.employee;
--加载数据到表中
load data local inpath '/export/data/hivedata/employee.txt' into table liushao.employee;

3. hql中HAVING与WHERE区别

复制代码
having是在分组后对数据进行过滤
where是在分组前对数据进行过滤
having后面可以使用聚合函数
where后面不可以使用聚合函数
相关推荐
Lx3523 小时前
如何正确选择Hadoop数据压缩格式:Gzip vs LZO vs Snappy
大数据·hadoop
让头发掉下来4 小时前
Hive 创建事务表的方法
大数据·hive·hadoop
Q_Q19632884755 小时前
python基于Hadoop的超市数据分析系统
开发语言·hadoop·spring boot·python·django·flask·node.js
计算机毕业设计木哥6 小时前
计算机毕设大数据选题推荐 基于spark+Hadoop+python的贵州茅台股票数据分析系统【源码+文档+调试】
大数据·hadoop·python·计算机网络·spark·课程设计
dualven_in_csdn7 小时前
多主站使用过的sql
sql
专注VB编程开发20年7 小时前
ACCESS SQL句子最长是多少个字符?
数据库·sql·access
W.A委员会10 小时前
SpringMVC
数据仓库·hive·hadoop·spring
全栈工程师修炼指南17 小时前
DBA | SQL 结构化查询语言介绍与学习环境准备
数据库·sql·学习·dba
王小王-12318 小时前
基于Hadoop的全国农产品批发价格数据分析与可视化与价格预测研究
大数据·hive·hadoop·flume·hadoop农产品价格分析·农产品批发价格·农产品价格预测