我有一个名为"posts"的SQL表,如下所示:
id | category
-----------------------
1 | 3
2 | 1
3 | 4
4 | 2
5 | 1
6 | 1
7 | 2
Run Code Online (Sandbox Code Playgroud)
每个类别编号对应一个类别.我如何计算每个类别在一个SQL查询中出现在帖子上的次数?
例如,这样的查询可能会返回一个符号数组,如下所示: (1:3, 2:2, 3:1, 4:1)
我当前的方法是对每个可能的类别使用查询,例如:SELECT COUNT(*) AS num FROM posts WHERE category=#,然后将返回值组合成最终数组.但是,我正在寻找一种只使用一个查询的解决方案.
如何编写SQL查询以计算表的num列中特定num值的总数.
例如,选择num = 1的位置
结果:2
+-----+-----+
| NAME | NUM |
+=====+=====+
| SAM | 1 |
+-----+-----+
| BOB | 1 |
+-----+-----+
| JAKE | 2 |
+-----+-----+
| JOHN | 4 |
+-----+-----+
Run Code Online (Sandbox Code Playgroud) 基本上我有一个类似于这样的表:
time.....activities.....length
13:00........3.............1
13:15........2.............2
13:00........3.............2
13:30........1.............1
13:45........2.............3
13:15........5.............1
13:45........1.............3
13:15........3.............1
13:45........3.............2
13:45........1.............1
13:15........3.............3
Run Code Online (Sandbox Code Playgroud)
几个笔记:
查询应该返回:
time........count
13:00.........2
13:15.........2
13:30.........0
13:45.........1
Run Code Online (Sandbox Code Playgroud)
基本上,对于每个唯一的时间,我想要计算活动值为3的行数.
那么我可以说:
At 13:00 there were X amount of activity 3s.
At 13:45 there were Y amount of activity 3s.
Run Code Online (Sandbox Code Playgroud)
然后我想要计算活动1s,2s,4s和5s.所以我可以绘制每个独特时间的分布.
相关(SQL Server): 计数(*)与计数(1)
你能告诉我性能有哪些(MySQL)吗?算(*)还是算(1)?
我有这样的表结构:
TABLE NAME : counter
id | datetime | url | ip
-------------------------------------------
1 |2013-04-12 13:27:09 | url1 | ip01
2 |2013-04-13 10:55:43 | url2 | ip02
3 |2013-04-14 11:14:12 | url1 | ip03
4 |2013-04-15 23:23:55 | url2 | ip04
5 |2013-05-02 08:34:44 | url1 | ip03
Run Code Online (Sandbox Code Playgroud)
通过智能SELECT查询,我想获取3列:
Distinct URL | count of ip | count of distinct ip
| for each distinct url | for each distinct url
-------------------------------------------------------------------
url1 | 3 | 2
url2 | … A有一个名为key的列 - 1,1,2,2,2,2,3现在我用3个查询来做:
SELECT count(key) as k FROM `test` WHERE key=1
SELECT count(key) as k FROM `test` WHERE key=2
SELECT count(key) as k FROM `test` WHERE key=3
Run Code Online (Sandbox Code Playgroud)
如何在一个查询中计算多少1,2,3?
我有一个类和类的类别列表。我想显示每个类别有多少个类。像这样的东西:
category | # of classes
Sports | 12
Fitness | 32
Climbing | 8
Run Code Online (Sandbox Code Playgroud)
该表的设置使每个类都位于包含类别的行上。
category | class_name
fitness | Learn to Skate
Run Code Online (Sandbox Code Playgroud)
我有以下 SQL,它生成不同类别的列表:
select
distinct category
from classes
order by category asc
; Output:
; Fitness
; Climbing
; Recreation
; ...
Run Code Online (Sandbox Code Playgroud)
我还想显示有多少个类。我认为这很简单:
select
distinct category,
count(distinct category)
from classes
order by category asc
; Output:
; Fitness | 11
Run Code Online (Sandbox Code Playgroud)
输出几乎有效,但它只产生一行。没有count()它,它会产生 11 行,正如预期的那样。为什么这只产生一行?我怎样才能做到这一点?