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后面不可以使用聚合函数
相关推荐
秃头菜狗10 分钟前
八、安装 Hadoop
大数据·hadoop·分布式
喃寻~1 小时前
java面试
数据库·sql·mysql
float_六七5 小时前
SQL流程控制函数完全指南
数据库·sql·adb
顧棟7 小时前
【HDFS实战】HADOOP 机架感知能力-HDFS
大数据·hadoop·hdfs
亚林瓜子8 小时前
AWS中国云中的ETL之从aurora搬数据到s3(Glue版)
hadoop·spark·云计算·etl·aws
AI绘画哇哒哒9 小时前
实战:SQL统一访问200+数据源,构建企业级智能检索与RAG系统(下)
人工智能·sql·深度学习·学习·ai·程序员·大模型
满昕欢喜9 小时前
SQL Server从入门到项目实践(超值版)读书笔记 27
数据库·sql·sqlserver
IT毕设梦工厂15 小时前
大数据毕业设计选题推荐-基于大数据的全国饮品门店数据可视化分析系统-Hadoop-Spark-数据可视化-BigData
大数据·hadoop·信息可视化·spark·毕业设计·源码·bigdata
亚林瓜子16 小时前
AWS中的离线计算(大数据大屏项目)
大数据·hadoop·sql·spark·云计算·aws
IT研究室17 小时前
大数据毕业设计选题推荐-基于大数据的青光眼数据可视化分析系统-大数据-Spark-Hadoop-Bigdata
大数据·hadoop·信息可视化·spark·毕业设计·源码·bigdata