看看这样的汇总查询有没有可能用SQL写出来?

ynduanlian 2011-05-09 05:11:25
数据库表中存了数千条分硬币纪录
表名:Coins
ID 面值(分) 年份
1 1 1980
2 2 1980
3 2 1954
……

假如同一年份的1分 2分 5分各1枚可以组成“1套“,可否用语句直接查出表Coins中有多少“套”分币?
...全文
40 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
ynduanlian 2011-05-10
  • 打赏
  • 举报
回复
谢谢WWWA
ynduanlian 2011-05-10
  • 打赏
  • 举报
回复
大致是这样了:
select Year,Min(Cns)
from (
select Year,Value,Count(1) as Cns
from Coins
where Year in (
select year
from (
SELECT distinct year,value from Coins a where value in(1,2,5)
) t group by year having count(*)=3
)
group by Year,Value
) tx
group by Year
WWWWA 2011-05-10
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 ynduanlian 的回复:]
库表里存的记录是“一枚分币一条纪录”(而不是一种分币一打纪录),比如“1984年的5分硬币”,可能有一百条纪录。
[/Quote]
如果可以的话,
上传你的MDB到www.access911.net/csdn
只要有问题的表、查询,用WINRAR压缩

正确结果贴出来
WWWWA 2011-05-10
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 ynduanlian 的回复:]
库表里存的记录是“一枚分币一条纪录”(而不是一种分币一打纪录),比如“1984年的5分硬币”,可能有一百条纪录。
[/Quote]
如果可以的话,
上传你的MDB到www.access911.net/csdn
只要有问题的表、查询,用WINRAR压缩

正确结果贴出来
ynduanlian 2011-05-10
  • 打赏
  • 举报
回复
库表里存的记录是“一枚分币一条纪录”(而不是一种分币一打纪录),比如“1984年的5分硬币”,可能有一百条纪录。
WWWWA 2011-05-10
  • 打赏
  • 举报
回复
SELECT YEAR,COUNT(*) FROM (
select year from (
SELECT distinct year,Parvalue from tth1 a where Parvalue in(1,2,5)) group by year having count(*)=3)
group by year
WWWWA 2011-05-10
  • 打赏
  • 举报
回复
SELECT YEAR,COUNT(*) FROM (
select year from (
SELECT distinct year,Parvalue from tth1 a where Parvalue in(1,2,5)) group by year having count(*)=3)
group by year
ynduanlian 2011-05-10
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 wwwwa 的回复:]
or
select year from (
SELECT distinct year,Parvalue from tth1 a where Parvalue in(1,2,5)) group by year having count(*)=3
[/Quote]
这个解答了哪一年至少够一套,但是多少套仍不知道啊,因为有的年份可能可以配出10套100套呢?
ynduanlian 2011-05-10
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 wwwwa 的回复:]
or
select year from (
SELECT distinct year,Parvalue from tth1 a where Parvalue in(1,2,5)) group by year having count(*)=3
[/Quote]
这样做似乎解决了“哪些年份能配出至少一套来”,但是没有得出总共有多少套的问题,有的年份可以凑出不1套啊?
ACMAIN_CHM 2011-05-09
  • 打赏
  • 举报
回复
select a.[Year]
from Coins a,Coins b ,Coins c
where a.[Year]=b.[Year] and a.[Year]=c.[Year]
and a.Parvalue=1
and b.Parvalue=2
and c.Parvalue=5
WWWWA 2011-05-09
  • 打赏
  • 举报
回复
or
select year from (
SELECT distinct year,Parvalue from tth1 a where Parvalue in(1,2,5)) group by year having count(*)=3
WWWWA 2011-05-09
  • 打赏
  • 举报
回复
select yaer,count(*) from (
SELECT distinct year from tth1 a where exists(select 1 from tth1 where Year=a.Year and Parvalue=1)
and
exists(select 1 from tth1 where Year=a.Year and Parvalue=2)
and
exists(select 1 from tth1 where Year=a.Year and Parvalue=5)) group by year
ynduanlian 2011-05-09
  • 打赏
  • 举报
回复
表名:Coins
ID Parvalue(面值) Year
1 1 1980
2 2 1980
3 2 1954
4 1 1980
5 5 1980

则查询结果为:
Year 套数
1980 1

(1980年的分币能找到1 2 5面值的各一个)
WWWWA 2011-05-09
  • 打赏
  • 举报
回复
贴记录及要求结果出来看看

7,712

社区成员

发帖
与我相关
我的任务
社区描述
Microsoft Office Access是由微软发布的关系数据库管理系统。它结合了 MicrosoftJet Database Engine 和 图形用户界面两项特点。
社区管理员
  • Access
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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