having 语句
WHERE 子句对被选择的列施加条件,而 HAVING 子句则对 GROUP BY 子句所产生的组施加条件。
SQL > SELECT ID, NAME, AGE, ADDRESS, SALARY FROM CUSTOMERS GROUP BY age HAVING COUNT(age) >= 2;
join 连接
select * from table 1 left join table 2 on t1.id = t2.id
select * from
sdata.dbo.student a LEFT join sdata.dbo.sc b on a.Sno = b.Sno
left join sdata.dbo.course c on b.Cno =c.Cno
计算函数
AVG()*1.0,sum()*1.0,count()*1.0,与group by连用
case when
case when 条件 then 结果 else 结果 end
主键
bw_id int primary key, -- 主键的关键字 即表里面的数据不能完全一致--
时间取值
insert into sdata.dbo.testday02
values(
'11'
,'王'
,'yi8'
,'100'
--,GETDATE() -- -- 自动输入
--,GETDATE()--
,'2018-07-07' --手动输入--
,'2018-07-07')
select *from sdata.dbo.testday02
select * ,YEAR(GETDATE())from sdata.dbo.testday02 --,YEAR(GETDATE())取年份--
select len(city),city from sdata.dbo.testday02 --求字段里面的字段名称的长度--
select SUBSTRING(city,1,3),city from sdata.dbo.testday02 --从city表里面的第一位截取到第四位显示--
select DATENAME(WEEKDAY,GETDATE()) --返回周几--
select DATEpart(WEEKDAY,GETDATE()) --返回的是第几天--
--为表里面增加字段--
alter table sdata.dbo.testday02 add update_date date;
alter table sdata.dbo.testday02 add update_date2 datetime; --具体的时间--
--去重复操作--
distinct
--top3排序--
select top 3 *from table1
--sql语句套路模板--
select
conlum1 --列名称
,conlum2
,ABS(conlum) --取绝对值--
,AVG(conlum)
,SUM(conlum)
,MIN(conlum)
,MAX(conlum)
from
sdata.dbo.testday02 --表名称--
where conlum is null --条件--
group by
conlum1
,conlum2
order by
conlum desc
--显示当天更新的数据--
select * from #mian
where date_stamp=cast(GETDATE() as DATE)
cast(GETDATE() as DATE)
CONVERT显示日期
--varchar(20)表示显示的长度,120表示显示的格式--
select CONVERT(varchar(20),GETDATE(),120)
-- 用命令行将数据导入到数据库里面去 bcp sdata.dbo.billing_data in D:softBCP-billing_data.txt -c -T --
--sdata.dbo.billing_data 表名字 D:softBCP-billing_data.txt 数据文件位置 其他的都是规定死的 --
-- bcp sdata.dbo.cost_detail in D:softBCP-cost_detail.txt -c -b 5000 -T --
--每5000行执行一下--
cast转换字符串类型
cast(b.loc_to_usd as float)
用row求最新日期
--2018年5月9号占5月的百分比--
day(CAST(max_date as DATE))*1.0/DAY(DATEADD(MONTH,1,CONVERT(varchar(6),CAST(max_date as DATE),112) + '01 ')-1)
一个月有多少天
简单的方法 select day(dateadd(month,1,'201805'+ '01 ')-1)
老师的方法
select
DAY(DATEADD(MONTH,1,CONVERT(varchar(6),'20180509',112) + '01 ')-1) --一个月有多少天
select day('20180509')
获取当前月的天数
SELECT 32-DAY(getdate()+32-DAY(getdate()))
思路:同上,即获取到某月的最后一天,即下个月第一天的前一天日期,用day()函数取到天数
例如 m_date=20150204
day(cast(convert(varchar(8),(m_date-m_date%100+1+100) ,112) as datetime)-1)