数据库难题

W1ngs 2017-07-31 03:47:46



...全文
284 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
W1ngs 2017-07-31
  • 打赏
  • 举报
回复
@二月十六 谢谢
W1ngs 2017-07-31
  • 打赏
  • 举报
回复
@中国风 谢谢
中国风 2017-07-31
  • 打赏
  • 举报
回复
最受欢迎作者只取一条记录时 参照方法第一个T-SQL语句
二月十六 版主 2017-07-31
  • 打赏
  • 举报
回复
--测试数据
if not object_id(N'Tempdb..#Book') is null
drop table #Book
Go
Create table #Book([BID] int,[title] nvarchar(23),[author] nvarchar(22))
Insert #Book
select 1,N'书名1',N'张三' union all
select 2,N'书名2',N'李四'
GO
if not object_id(N'Tempdb..#Borrow') is null
drop table #Borrow
Go
Create table #Borrow([BorrowID] int,[Bid] int)
Insert #Borrow
select 1,1 union all
select 2,1 union all
select 3,1 union all
select 4,2 union all
select 5,2 union all
select 6,1
Go
--测试数据结束
--1、
SELECT title ,
author
FROM #Book
JOIN ( SELECT TOP 1
bid ,
COUNT(1) AS count
FROM #Borrow
GROUP BY Bid
ORDER BY COUNT(1) DESC
) t ON t.bid = #book.BID
--2、
SELECT author ,
t.count AS 借阅总次数
FROM #Book
JOIN ( SELECT TOP 1
bid ,
COUNT(1) AS count
FROM #Borrow
GROUP BY Bid
ORDER BY COUNT(1) DESC
) t ON t.bid = #book.BID


中国风 2017-07-31
  • 打赏
  • 举报
回复
e.g.
--取一条记录
SELECT TOP 1 b.Title,b.author,COUNT(*) AS 次数
FROM borrow AS a
INNER JOIN book AS b ON b.BID=a.BID
GROUP BY b.BID,b.Title,b.author
ORDER BY COUNT(*) DESC


--支持并列第一
SELECT  Title ,
        author
FROM    ( SELECT    Title ,
                    author ,
                    DENSE_RANK() OVER ( ORDER BY t1.次数 DESC) AS RN
          FROM      ( SELECT    b.BID ,
                                b.Title ,
                                b.author ,
                                COUNT(*) AS 次数
                      FROM      borrow AS a
                                INNER JOIN book AS b ON b.BID = a.BID
                      GROUP BY  b.BID ,
                                b.Title ,
                                b.author
                    ) AS T1
        ) AS TT1
WHERE   RN = 1;



--作者支持并列第一
SELECT  author ,
        次数
FROM    ( SELECT    author ,
                    次数 ,
                    DENSE_RANK() OVER ( ORDER BY t1.次数 DESC ) AS RN
          FROM      ( SELECT    b.author ,
                                COUNT(*) AS 次数
                      FROM      borrow AS a
                                INNER JOIN book AS b ON b.BID = a.BID
                      GROUP BY  b.author
                    ) AS T1
        ) AS TT1
WHERE   RN = 1;
W1ngs 2017-07-31
  • 打赏
  • 举报
回复
@中国风 问题在第三楼
W1ngs 2017-07-31
  • 打赏
  • 举报
回复
三楼是问题!
中国风 2017-07-31
  • 打赏
  • 举报
回复
?什么问题 -------设计问题还是开发问题
W1ngs 2017-07-31
  • 打赏
  • 举报
回复
是这两题
W1ngs 2017-07-31
  • 打赏
  • 举报
回复
求大神么多多照顾

34,571

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧