SQL语句备忘
来源:互联网 发布:简单制作网页软件 编辑:程序博客网 时间:2024/04/29 15:46
--RANK 排序(每个分组进行单独排名,相同名次的会占位,比如两个第二名,就没有第三名了,直接到第四名)
select FenXiaoId,Price,
RANK() OVER( --使用RANK() 进行排名
PARTITION BY FenxiaoID --使用fenxiaoid进行分组
ORDER BY Price Desc --使用Price进行排序
) as PaiMing
from PaymentOrder
--DENSE_RANK排序(名次不占位,其他和RANK一样)
select FenXiaoId,Price,
DENSE_RANK() OVER( --使用DENSE_RANK() 进行排名
PARTITION BY FenxiaoID --使用fenxiaoid进行分组
ORDER BY Price Desc --使用Price进行排序
) as PaiMing
from PaymentOrder
--NTILE()函数进行分组,指定范围
select FenXiaoId,Price,
NTILE(5) OVER( --使用NTILE()只能排序直到5
ORDER BY Price Desc --使用Price进行排序
) as PaiMing
from PaymentOrder
----NTILE()使用场景
select FenXiaoId,Price,
CASE NTILE(4) OVER (ORDER BY Price DESC)
WHEN 1 THEN '25%'
WHEN 2 THEN '25%-50%'
WHEN 3 THEN '50%-75%'
WHEN 4 THEN '75%-100%' END AS Level
from PaymentOrder
--ROW_NUMBER() 函数 分页示例
----创建分页存储过程
create proc Pro_UserInfo_GetPageUserInfos
@PageSize int,
@pageIndex int,
@TotalCount int output
as
select * from (
select *,ROW_NUMBER() over(Order by UserId asc) as RowNum from UserInfo
) as T
where T.RowNum between ((@PageIndex-1)*@PageSize+1) and (@PageSize*@PageIndex)
select @TotalCount=count(1) from UserInfo;
--捕获异常
BEGIN TRY
SELECT Price/0 FROM PaymentOrder
END TRY
BEGIN CATCH
SELECT ERROR_LINE(),ERROR_NUMBER(),ERROR_SEVERITY(),ERROR_MESSAGE()
END CATCH
--使用CROSS APPLY 可以连接函数
select p.usecounts,p.cacheobjtype,p.objtype,s.text from
sys.dm_exec_cached_plans p
cross apply sys.dm_exec_sql_text(plan_handle) s;
--使用PIVOT 进行行转列 [值],行记录里有多少值,方括号里就要写多少值,注意下
select FenXiaoId,
[1] as "一月份",
[2] as "二月份",
[3] as "三月份",
[4] as "四月份",
[5] as "五月份",
[6] as "六月份",
[7] as "七月份",
[8] as "八月份",
[9] as "九月份",
[10] as "十月份",
[11] as "十一月份",
[12] as "十二月份"
from
(select c.FenXiaoId,sum(c.Price) sumPrice,MONTH(c.ConfirmDate) MonthNumber from PaymentOrder c where c.ConfirmDate>'2016-1-1' group by MONTH(c.ConfirmDate),c.FenXiaoId) aa
PIVOT --进行转列操作
(
sum(sumPrice)
for MonthNumber in
([1],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11],[12])
) as MONTHS;
--使用UNPIVOT 进行列转行
select TableId,ziduan,jiage from (
select top 3 a.TableId,a.PayPrice,a.Price,a.YouHui from PaymentOrder a) aa
UNPIVOT (
jiage
for ziduan in
([price],[PayPrice],[youhui])
) AS UNPVT
--将数据删除,然后将删除的数据输出,类似的还有 inserted updated
delete from PaymentOrder
output deleted.*
where TableId=1
--使用变量的top 查询
declare @p int
set @p=100
select top(@p) * from PaymentOrder;
--使用TABLESAMPLE 示例数据
select * from PaymentOrder TABLESAMPLE(10 PERCENT);--获取10%的数据
select * from PaymentOrder TABLESAMPLE(200 rows);--获取大约200行的数据
--使用累加运算符
declare @i int=2
set @i*=2 --累加运算
PRINT @i;
--一次插入多条数据
create table #t (c1 int,c2 nvarchar(10));
insert #t values (1,'a'),(2,'b')
select c1,c2,c3 from #t
inner join
(
values(1,'aa'),(3,'cc') --内连接多条数据
) t (c3,c4) on #t.c1=t.c3
--GROUPING SETS 的使用,不同字段分别分组,然后合并(不同于不同字段同时分组的情况)
select FenXiaoId,XingShiId,COUNT(1) from PaymentOrder
GROUP BY GROUPING SETS(FenXiaoId,XingShiId)
- 一段sql语句,备忘!
- SQL常用语句备忘
- SQL语句备忘
- 备忘sql语句
- SQL语句备忘
- SQL语句备忘
- sql语句备忘
- SQL语句备忘
- SQL语句备忘
- 柳永法常用SQL语句备忘
- oracle sql 语句 记录备忘
- 数据库sql查询语句备忘
- oracle number 类型sql语句备忘
- 一些简单的mysql SQL语句备忘
- SQL语言的CASE语句备忘
- MySQL命令行 与 SQL语句备忘
- 基于Oracle的SQL语句备忘
- oracle、SQL Server、Mysql分页语句备忘
- Create Window
- linux串口编程基础
- Web服务器、应用程序服务器、HTTP服务器区别
- 数据结构实验之栈一:进制转换
- 大数据学习路线
- SQL语句备忘
- lsmod insmod rmmod modprobe
- Windows 清除共享用户名和密码
- MxNet系列——get_started——ubuntu_setup
- nodejs启动
- 求答案 ? 一筐鸡蛋: 1个1个拿,正好拿完。 2个2个拿,还剩1个。 3个3个拿,正好拿完。 4个4个拿,还剩1个。 5个5个拿,还差1个。 6个6个拿,还剩3个。 7个7个拿,还剩4个。 8个8个
- 得到datatable 每列列名
- 关于java中field的理解
- layer.open 强化1