诸君,请教一个 sql 的编写

2015-09-25 15:14:21 +08:00
 ragnaroks

http://i3.tietuku.com/9c7c41652569cbd5.png

如图,如何将上面的数据库信息取成下面这种?
统计"ua"字段的次数

2009 次点击
所在节点    问与答
11 条回复
secret32
2015-09-25 15:27:33 +08:00
UID 是 ofid 吗? select *, count(*) from tablename group by ua
dong3580
2015-09-25 15:34:00 +08:00
@secret32
我觉得回复之前测试一下更好,
secret32
2015-09-25 15:39:06 +08:00
@dong3580 你怎么知道我没测试呢?发现了哪里有问题请直说
TangMonk
2015-09-25 15:41:51 +08:00
group by ua 呗
dong3580
2015-09-25 15:43:31 +08:00
uid 什么鬼?
仅供参考
select advid,COUNT(1) count,ua
from j
where 1=1
group by ua ,advid
having COUNT(1)>=1
order by count(1) desc
======
result
advid count ua
2 3 aaaaaaaa
2 1 bbbbbbbbbbbbb
2 1 ccccccccccc
ragnaroks
2015-09-25 15:46:03 +08:00
@secret32
非常感谢,这就是我想要的,我是个 sql 苦手
ragnaroks
2015-09-25 15:46:25 +08:00
@dong3580
非常感谢
dong3580
2015-09-25 15:52:36 +08:00
@secret32
”选择列表中的列 'j.uid' 无效,因为该列没有包含在聚合函数或 GROUP BY 子句中。“
你是 mysql ?
secret32
2015-09-25 15:57:45 +08:00
@dong3580 我确实是用的 mysql ,我的 sql 前面问了楼主 UID ,因为没有这一列,就直接写了*,主要是为了表明要使用 group by 。其他数据库我也不常用,不知道这么写会有问题,受教了。
dong3580
2015-09-25 16:06:13 +08:00
@secret32
试了试, mysql 里面两种写法都正常,抱歉,误解了,我是在 mssql 测的。
feiyuanqiu
2015-09-25 16:08:27 +08:00
一楼的 SQL 是有问题的,如果表里同一个 ua 有多个 advid 数据项, group by ua 出来的结果中 advid 就不准确

SELECT ofid AS UID, advid, COUNT(*) AS count, ua FROM table GROUP BY advid, ua ORDER BY count DESC

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/223633

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX