我很难弄清楚如何做到这一点,我无法很好地解释它。由于我不知道如何解释,我似乎无法通过简单的研究在网上找到答案。所以,我必须把它画出来并寻求帮助。以下是详细信息:
示例列:我的原始 SQL 查询创建了此表(特定于此问题的数据来自一个巨大的表)
示例代码:
SELECT
inventory .01 as `Item#`,
inventory .02 as `warehouse`,
inventory .03 as `qty`,
inventory .04 as `price`,
inventory .05 as `weight`,
inventory .06 as `other`
FROM
Inventory
WHERE
Inventory.other = 5
Run Code Online (Sandbox Code Playgroud)
返回这个:
Item# | warehouse | qty | price | weight | other
1 1 1 3 4 5
1 2 6 3 4 5
1 3 3 3 4 5
Run Code Online (Sandbox Code Playgroud)
我使用 group by 重写了表,使数据看起来像这样:
SELECT
inventory .01 as `Item#`,
inventory .03 as `qty (whse1)`, …Run Code Online (Sandbox Code Playgroud) 我哪里错了?为什么在添加 MAX 函数时会收到该消息?
查询涉及:
WITH
references_cve AS (
SELECT vulnerability_id, reference
FROM dim_vulnerability_reference
WHERE dim_vulnerability_reference.source = 'NVD'
)
SELECT DISTINCT ON (
da.ip_address,
favi.port,
dv.severity,dp.name, dv.title,
dv.description,
fix,
dv.nexpose_id,
cve.reference,
da.host_name,
dos.description,
da.last_assessed_for_vulnerabilities,
davbs.solution_id
)
da.ip_address AS IPAddress,
CASE WHEN favi.port = -1 THEN NULL ELSE favi.port END AS Port,
dv.severity AS Severity,
dp.name AS Protocol,
dv.title AS VulnerabilityName,
htmlToText(dv.description) AS Summary,
htmlToText(dv.description) AS Description,
htmlToText(fix) as Solution,
'https://www.rapid7.com/db/vulnerabilities/' || dv.nexpose_id as SeeAlso,
dv.nexpose_id AS NexposeID,
''||null as PluginOutput,
cve.reference …Run Code Online (Sandbox Code Playgroud) 我昨天遇到了这个问题。我只是在寻找一个解释。
\n以下关于 SQL 查询的哪些说法是正确的?
\nP : SQL 查询可以包含 HAVING 子句,即使它没有 GROUP BY 子句
\n问:只有当 SQL 查询具有 GROUP BY 子句时,它才可以包含 HAVING 子句
\nR :GROUP BY 子句中使用的所有属性必须出现在 SELECT 子句中
\nS :并非 GROUP BY 子句中使用的所有属性都需要出现在 SELECT 子句中
\n(A)\xc2\xa0P 和 R。
\n(B)\xc2\xa0P 和 S。
\n(C)\xc2\xa0Q 和 R。
\n(D)\xc2\xa0Q 和 S。
我选择了A作为答案。但实际上B是正确答案。
\n我想知道有些网站说R是正确的,而另一些网站说S是正确的。最后两者之间哪种说法是正确的?
\n我将 JSON 字符串传递给存储过程以插入仓库库存。
有时,会有多个具有相同产品的订单项,在相同的货架上、相同的托盘 (LPN) 上、具有相同的日期。我想将它们汇总到表中的一行中。
JSON 表示已接收并存放到某个位置的各个行。这里有 2 个相同的项目:
[{"StockCode": "ABC123", "Qty": "200", "Bin": "E4B4_L", "LPN": "1234", "PutDate": "2022-01-21 18:35:53 UTC"}, {"StockCode": "ABC123", "Qty": "400", "Bin": "E4B4_L", "LPN": "1234", "PutDate": "2022-01-21 18:36:43 UTC"}]
Run Code Online (Sandbox Code Playgroud)
所以:
ABC | 200 | 2022-01-21 00:00:00.000 | LPN1234
ABC | 400 | 2022-01-21 00:00:00.000 | LPN1234
Run Code Online (Sandbox Code Playgroud)
应汇总为:
ABC | 600 | 2022-01-21 00:00:00.000 | LPN1234
Run Code Online (Sandbox Code Playgroud)
我尝试对数量进行 GROUP BY 和 SUM,但表中的结果行仍然是 2 个单独的行。我意识到由于时间戳的原因 PutDate 不一样,所以我认为肯定将其转换为 DATE 可以解决这个问题,但事实并非如此。
SQL脚本:
ALTER Procedure spc_PutAway
(@json NVARCHAR(MAX) = '')
AS …Run Code Online (Sandbox Code Playgroud) 查询:
select year,sum(mark),sum(maxmark)
from table1
group by parameterno
Run Code Online (Sandbox Code Playgroud)
产生错误消息:
列“table1.year”在选择列表中无效,因为它不包含在聚合函数或 GROUP BY 子句中。
对于此查询:
SELECT * FROM dogs WHERE a = ? AND b = ? GROUP BY c
Run Code Online (Sandbox Code Playgroud)
哪个综合指数更好:
INDEX(a, b, c)
Run Code Online (Sandbox Code Playgroud)
或者
INDEX(c, a, b)
Run Code Online (Sandbox Code Playgroud) group-by ×6
errors ×1
index ×1
insert ×1
json ×1
mysql ×1
postgresql ×1
sql-server ×1
sql-standard ×1