我在MySQL服务器上试过这个查询(5.1.41)......
SELECT max(volume), dateofclose, symbol, volume, close, market FROM daily group by market
Run Code Online (Sandbox Code Playgroud)
我得到了这个结果:
max(volume) dateofclose symbol volume close market
287031500 2010-07-20 AA.P 500 66.41 AMEX
242233000 2010-07-20 AACC 16200 3.98 NASDAQ
1073538000 2010-07-20 A 4361000 27.52 NYSE
2147483647 2010-07-20 AAAE.OB 400 0.01 OTCBB
437462400 2010-07-20 AAB.TO 31400 0.37 TSX
61106320 2010-07-20 AA.V 0 0.24 TSXV
Run Code Online (Sandbox Code Playgroud)
如您所见,最大音量与音量列的"实际"值非常不同?!?
volume列定义为int(11),我在这个表中有200万行,但它离MyISAM存储的最大值很远,所以我不相信这是问题所在!?同样奇怪的是数据从同一天开始显示(dateofclose).如果我使用WHERE子句强制特定日期,则相同的符号会出现不同的max(volume)结果.这很奇怪......
需要一些帮助!
更新:
这是我编辑的"工作"请求:
SELECT a.* FROM daily a
INNER JOIN (
SELECT market, MAX(volume) AS max_volume
FROM daily
WHERE dateofclose = '20101108' …Run Code Online (Sandbox Code Playgroud) 表格:
-- products --
id
-- categories --
id
-- products_categories --
id
product_id
category_id
Run Code Online (Sandbox Code Playgroud)
什么是SQL查询,它返回与给定的category_ids列表匹配的所有产品ID?
示例:给定列表(3,4,5)我希望所有具有最少(可能更多)类别ID 3和类别ID 4以及类别ID 5的product_ids?
我有一个排名表,其架构被定义为rank(id,key,value),其中key是主键
sqlite> .schema rank
CREATE TABLE 'rank' ( ID VARCHAR, KEY VARCHAR, VALUE VARCHAR NOT NULL );
CREATE INDEX 'rank_id___djklaf3451jlZZZRFfa___' ON 'rank' ( ID );
sqlite> select * from rank;
-----------------------------------------------------
Tymb-W64uwvM|Tymc8LPQnxBg|5
TymdPRdFpBcE|TymdSsaIFhuI|2
TymdPRdFpBcE|TymdjkGgExcE|3
TymeVf6N1RH4|TymeZGxydCJ8|3
TymeVf6N1RH4|Tymeecz1ORW8|20
sqlite> select id,min(value) from rank group by id;
------------------------------------------------------
Tymb-W64uwvM|5
TymdPRdFpBcE|2
TymeVf6N1RH4|20
sqlite> select id,max(value) from rank group by id;
------------------------------------------------------
Tymb-W64uwvM|5
TymdPRdFpBcE|3
TymeVf6N1RH4|3
Run Code Online (Sandbox Code Playgroud)
如您所见,最小和最大功能的第3个结果都不正确.sqlite版本是3.6.23.
有什么建议?
给出的是像这样的Postgres表
nummer vorname name cash
------|-----------|-----------|-----
1 paul smith 500
2 andy london 700
2 mike dover 700
3 clara winchester 200
Run Code Online (Sandbox Code Playgroud)
要查询此表,我的sql看起来像这样正确知道:
SELECT
nummer,
vorname,
name,
cash as total
FROM
data.myTable
GROUP BY
nummer,
name,
vorname,
cash
ORDER BY
nummer;
Run Code Online (Sandbox Code Playgroud)
是否可以将两行nummer相同(在本例中2).意味着我的输出应该如下所示(如果数字相等,现金也将具有相同的值):
nummer vorname name cash
------|-----------|-----------|-----
1 paul smith 500
2 andy london 700
mike dover
3 clara winchester 200
Run Code Online (Sandbox Code Playgroud) 我需要对由某些其他变量打破的变量求和.我通常会使用该group by功能执行此操作.
但是在这种情况下,我不想汇总数据.我想保留原始数据与某种聚合sum.
-ID-- --amount--
1 23
1 11
1 8
1 7
2 10
2 20
2 15
2 10
Run Code Online (Sandbox Code Playgroud)
结果
-ID-- --amount-----SUM
1 23 49
1 11 49
1 8 49
1 7 49
2 10 55
2 20 55
2 15 55
2 10 55
Run Code Online (Sandbox Code Playgroud) 考虑以下两个表:
key_names
----------------------------------------------
id | name
----------------------------------------------
1 Outside Temperature
2 Inside Temperature
3 Relative Humidity
key_values
----------------------------------------------
id | time | key_id | value
----------------------------------------------
1 2013-06-04 13:20:16.347 1 50
2 2013-06-04 13:20:16.348 2 30
3 2013-06-04 13:20:16.349 3 10
4 2013-06-04 13:20:31.120 1 55
5 2013-06-04 13:20:31.122 2 29
6 2013-06-04 13:20:31.120 3 11
Run Code Online (Sandbox Code Playgroud)
对于3个不同的密钥,值以15秒的间隔写入数据库.我希望能够在1分钟,5分钟,1小时和其他时间间隔取出值.
这就是我现在所用的五分钟间隔:
SELECT time, key_name, value
FROM key_values kv
JOIN key_names kn ON kv.key_id = kn.id
WHERE (key_id = 1 OR key_id = 2 …Run Code Online (Sandbox Code Playgroud) 在mysql中使用count和group by时,如何隐藏在结果表中隐式显示的count列?
SELECT name, region, COUNT(*) as num_visits
FROM world
GROUP BY region
HAVING num_visits > 1
Run Code Online (Sandbox Code Playgroud)
这将显示一个表,其中一列作为区域,另一列作为每个的num_visits(假设它被多次访问).
是否可以隐藏最后一列,以便只显示区域?
谢谢!
我有一个桌子员工,
CREATE TABLE employees (
employeeid NUMERIC(9) NOT NULL,
firstname VARCHAR(10),
lastname VARCHAR(20),
deptcode CHAR(5),
salary NUMERIC(9, 2),
PRIMARY KEY(employeeid)
);
Run Code Online (Sandbox Code Playgroud)
我想计算工资的标准差.
这是我正在使用的代码:
select avg(salary) as mean, sqrt(sum((salary-avg(salary))*(salary-avg(salary)))/count(employeeid)) as SD
from employees
group by employeeid;
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
ORA-00979: not a GROUP BY expression
00979. 00000 - "not a GROUP BY expression"
*Cause:
*Action:
Error at Line: 260 Column: 12
Run Code Online (Sandbox Code Playgroud)
第260行第12列是平均(工资)
我该如何解决这个问题?
我有这张桌子:
abs=# \d import.vw_rpt_certification
Table "import.vw_rpt_certification"
Column | Type | Collation | Nullable | Default
------------------------------+------+-----------+----------+---------
user_id | text | | |
cert_object_id | text | | |
version | text | | |
cert_is_active | text | | |
cert_modify_dt | text | | |
period_type | text | | |
user_cert_status | text | | |
first_period_completion_date | text | | |
period_expiration_date | text | | |
period_due_date | text | | |
user_lo_active | text | …Run Code Online (Sandbox Code Playgroud)