论坛首页 综合技术论坛

sql中count函数和distinct函数的配合使用

浏览 9938 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-12-04  
遇到一个问题:(面试的问题)
题目:
=========================
用户名    商品    数量
A        甲      1
B        乙      2
C        丙      2
B        甲      1
A        丙      2
C        丙      1

写sql语句
要求查出 购买商品两种类型以上(含)的用户集合

数据表中的数据如下:
图一


同事们给出的意见是:

SELECT temp.name 
FROM (
	SELECT count(tempone.goodsname) as nums,
             tempone.name
	FROM tempone
	GROUP BY tempone.name
	) temp
WHERE temp.nums > 1


查出来的结构如下
图二


C用户是只卖了一种商品 应该被排除...
如是参考了些列文档...http://sql.1keydata.com/cn/sql-count.php
把count函数和distinct函数组合起来的用法

SELECT temp.name 
FROM (
	SELECT count(DISTINCT tempone.goodsname) as nums,
         tempone.name
	FROM tempone
	GROUP BY tempone.name
	) temp
WHERE temp.nums > 1 


查出来的结构如下
图三

如图三表示 符合了该要求

这个题目其实不难,只是平时用到的时候 没注意总结.
鉴于此 我总结如上

===
总结才是记住东西的根本
  • 大小: 7.4 KB
  • 大小: 2.7 KB
  • 大小: 2.9 KB
   发表时间:2008-12-05  
select 用户名 from  table group by 商品 having count(商品)>=2
0 请登录后投票
   发表时间:2008-12-05   最后修改:2008-12-05
xuyao同学
你写错了.....
0 请登录后投票
   发表时间:2008-12-05  
不知道这样行不行呢?
select t1.name from temp t1,temp t2 where t1.name = t2.name and t1.goodsname != t2.goodsname group by t1.name 
0 请登录后投票
   发表时间:2008-12-05  
xinghu 写道
不知道这样行不行呢?
select t1.name from temp t1,temp t2 where t1.name = t2.name and t1.goodsname != t2.goodsname group by t1.name 


  这一样的写法肯定是影响查询速度的 行不行 仔细测试下就行了
0 请登录后投票
   发表时间:2008-12-06  
yangtao309 写道

  这一样的写法肯定是影响查询速度的 行不行 仔细测试下就行了

不知道哪里影响了查询速度呢?
0 请登录后投票
   发表时间:2008-12-08   最后修改:2008-12-09
xinghu 写道
yangtao309 写道

  这一样的写法肯定是影响查询速度的 行不行 仔细测试下就行了

不知道哪里影响了查询速度呢?


经过测试 楼上的写法
select t1.name from tempone t1,tempone t2 where t1.name = t2.name and t1.goodsname != t2.goodsname group by t1.name;

可以实现...

我正在添加记录测试 看是否影响速度...
0 请登录后投票
   发表时间:2008-12-09  
xinghu 写道
yangtao309 写道

  这一样的写法肯定是影响查询速度的 行不行 仔细测试下就行了

不知道哪里影响了查询速度呢?


是否影响查询速度 请参见帖子http://www.iteye.com/topic/289339
话不多说...
0 请登录后投票
   发表时间:2008-12-16  
select name
from tempone
group by name
having count(distinct goodname)>1
0 请登录后投票
   发表时间:2008-12-17  
apple_wxs 写道

select name from tempone group by name having count(distinct goodsname)>1


这个写法不错 结果验证是正确的
0 请登录后投票
论坛首页 综合技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics