当前在线人数16116
首页 - 分类讨论区 - 电脑网络 - 数据库版 - 同主题阅读文章

此篇文章共收到打赏
0

  • 10
  • 20
  • 50
  • 100
您目前伪币余额:0
未名交友
[更多]
[更多]
这个问题可以用SQL 实现吗?
[版面:数据库][首篇作者:marychung] , 2017年12月11日10:30:26 ,621次阅读,3次回复
来APP回复,赚取更多伪币 关注本站公众号:
[分页:1 ]
marychung
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 1 ]

发信人: marychung (KK), 信区: Database
标  题: 这个问题可以用SQL 实现吗?
发信站: BBS 未名空间站 (Mon Dec 11 10:30:26 2017, 美东)

表很简单.就三列

ID, Date, Comment

ID 这列很长,许多ID#是重复出现的. Date 这列就是对应没个ID, 许多也是重复出现.

我想在COMMENT 这列实现对每ID,如果对应日期那列,不同的日期出先三次或以上,就是"
YES" ,否则就是"NO".

举个例子,假如ID 222, 有30行.但对应日期那拦只有04/15/2017, 04/18/2017 这俩个
日期.那么22对应的COMMENT 都是"NO". 如果出现三不同个日期,就是"YES"


好像用SELF JOIN 可以?

--
※ 修改:·marychung 於 Dec 11 10:32:21 2017 修改本文·[FROM: 130.]
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 130.]

 
AlexanderZ
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 2 ]

发信人: AlexanderZ (Emitor4), 信区: Database
标  题: Re: 这个问题可以用SQL 实现吗?
发信站: BBS 未名空间站 (Mon Dec 11 14:58:10 2017, 美东)

不知道理解对没有。

1.
SELECT t1.ID
  , t1.Date
  , CASE WHEN t2.ID IS NULL THEN 'NO' ELSE 'YES' END AS Comment
FROM Table t1
LEFT JOIN (
  SELECT ID, Date
  FROM Table
  GROUP BY ID, Date
  HAVING COUNT(*)>=3
) t2 ON t1.ID=t2.ID AND t1.Date=t2.Date

2.
SELECT ID
  , Date
  , CASE WHEN (SELECT COUNT(*) FROM Table WHERE ID=t1.ID AND Date=t1.Date)>=
3 THEN 'YES' ELSE 'NO' END AS Comment
FROM Table t1


--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 206.]

 
startinvest
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 3 ]

发信人: startinvest (AI), 信区: Database
标  题: Re: 这个问题可以用SQL 实现吗?
发信站: BBS 未名空间站 (Mon Dec 11 17:49:40 2017, 美东)

select ID, case when Count(distinct date)>=3 then 'Yes' else 'No' end as
Comment
from table
group by ID

--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 75.]

 
rodeo
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 4 ]

发信人: rodeo (rodeo), 信区: Database
标  题: Re: 这个问题可以用SQL 实现吗?
发信站: BBS 未名空间站 (Mon Dec 11 23:15:00 2017, 美东)

T-SQL的实现

SELECT ID FROM
(SELECT ID, COUNT(Date) OVER (PARTITION BY ID) AS DateCount
FROM (SELECT ID, Date FROM A GROUP BY ID, Date) T) T1
WHERE DateCount >=3
--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 71.]

[分页:1 ]
[快速返回] [ 进入数据库讨论区] [返回顶部]
回复文章
标题:
内 容:

未名交友
将您的链接放在这儿

友情链接


 

Site Map - Contact Us - Terms and Conditions - Privacy Policy

版权所有,未名空间(mitbbs.com),since 1996