我正在从一个表中获取记录,其中一个字段计数,另一个字段作为名称。我只想要 10 条记录。其中 9 条记录给了我字段及其计数。但我想将 10 条记录显示为“其他”,所有剩余字段都带有计数。这有点像包装记录。下面是表格内容。
emp_id | designation
1 | software Engg.
2 | software Engg.
3 | Project Manager
Run Code Online (Sandbox Code Playgroud)
不少于10个指定。
And I want to show first 10 records as
Software Engineers 20
Project Manager 5
....
....
....
Others 50
Run Code Online (Sandbox Code Playgroud)
有什么方法可以为 mysql db 进行 SQL 查询,以便在我为“其他”添加记录计数的应用程序级别快速并节省时间?
请建议我如何以有效的方式使其成为可能。
Astor Data、Greenplum 和 GridSQL 都允许对 SQL 查询进行大规模并行处理。它们也都是围绕 PostgreSQL 技术构建的。这仅仅是因为许可问题还是有其他原因?对我来说,它看起来像 MyISAM,不符合 ACID,因此不会遇到与 MVCC 相同的问题(如这里所见),因为 PostgreSQL 更适合构建高性能数据仓库。毕竟,就我所见,OLAP 负载不需要事务。
首先:我的头衔很烂,所以帮我找出一个新的?
我不能在这里发布所有的 SQL(超过 30k 个字符),所以我把它贴在了pastebin.com
问题:
我得到一个 XML 文件,我从中抓取了一些记录,我需要从记录中提取一些数据并建立另一个表。这些记录是关于一个事件的发生和发生,我已经在 pastebin 中包含了示例数据以进行重新创建。没有看到数据,很难解释。我已经提供了从我的示例导入中获得的所有数据,这些数据应该足以构建应用程序,但我没有得到比数据中显示的更多的信息。
我会给你一点时间看一眼数据,所以这是有道理的。
所以我需要做的是:对于每个“关闭”事件,我需要将它与下一个“开启”事件相匹配,最后我需要有两张桌子,一张桌子用于“历史事件”,一张桌子为“时事”。但是,如果我能正确构建“历史事件”,我就可以弄清楚如何从中获取“当前事件”。
商业规则:
如果在“on”事件之前收集了两个或更多“off”事件,请保留最旧的“off”事件。如果在“关闭”事件之前收集了两个或更多“开启”事件,则保留最新的“开启”事件。如果有一个完整的对,把它们放在历史表中。如果有一个“关闭”事件而不是一个“开启”事件,把它放在当前表中(所以如果我想继续从这个表中插入/删除,那也很好)。如果当前表中已经存在“关闭”事件,我可以将其移动到历史表中以读取“开启”事件(这将需要稍后实施,但如果我可以匹配配对最初我现在可以继续前进。
我认为这就是逻辑。我的想法是弄清楚如何在 SQL 中执行此操作,或者将其推送到用 C# 编写的应用程序,并使用 C# 中的一些临时列表来执行此操作,并构建我需要用于...下一个逻辑的内容。这在 C# 中可能要容易得多,但我感觉 SQL 可以像 C# 一样轻松地完成这项工作,所以我需要 dba 大师的一些帮助。
我的查询已经不起作用,但这就是我在周五回家之前开始的地方,从那时起我一直在考虑它,并构建一个我可以在网上发布的示例问题(以及整个生活你也知道)。数据是实时数据且准确无误,除了 ID 被匿名化并且文本字段更改为易于使用的内容。
这是一个电子表格,大致显示了我希望数据在最后的样子以及现在的样子。有当前数据(为了清晰起见,每个ID之间有一个间隔行),历史表中的数据(与原始数据的ID对齐以便理解)和当前表(再次对齐)。我希望这可以帮助澄清业务规则。 https://spreadsheets.google.com/ccc?key=0AuvCdeHuVU5ddHRCNkpuWHBUREpRajlmLU5VX2xsWnc&hl=en&authkey=COq7y50H
所以完整的 SQL 包括 tabledefs 和当前(非常不正确的)查询在 pastebin http://pastebin.com/k2f2CLnQ
一种)
SQL> CREATE TABLE xml_tab1(poDoc XMLTYPE);
Table created.
SQL> desc xml_tab1;
Name Null? Type
----------------------------------------- -------- ----------------------------
PODOC PUBLIC.XMLTYPE
Run Code Online (Sandbox Code Playgroud)
b)
SQL> CREATE TABLE xml_tab2 of XMLType;
Table created.
SQL> desc xml_tab2;
Name Null? Type
----------------------------------------- -------- ----------------------------
TABLE of PUBLIC.XMLTYPE
Run Code Online (Sandbox Code Playgroud)
代码来自这里。
在第一个中,我们创建了一个类型为 的列XMLTYPE。第二个是做什么的?我什么时候应该使用第一个或第二个?
是role某些privileges的集合吗?
我在 MySQL 中寻找 SQL Server TOP (X) 模拟
在 SQL Server 中:
SELECT
TOP 5
Z
...
FROM
ORDER BY Z DESC
Run Code Online (Sandbox Code Playgroud)
如何在 MySQL 中做到这一点?
添加:
我找到了其他 RDBMS:返回 TOP N 记录
我知道这个问题可能听起来太愚蠢了,但我从来没有理解这部分。
SQL*Plus 适用于 SQL 和 PL/SQL。我如何知道某些代码是 SQL 还是 PL/SQL?如果我的代码有 for 循环,它就不再是 SQL 了吗?
PL/SQL 是 SQL 的扩展,具有循环、条件等。那么任何 SQL 代码默认都是 PL/SQL 代码?不是这样吗?
SQL 和 PL/SQL 之间有分界线吗?
区分触发此问题的黑白 SQL 和 PL/SQL 的两个示例:
我正在与一个试图实施 EAV 系统的团队合作。他们决定按类型拆分属性值表,并且他们正在讨论针对不同大小范围的 varchar 使用不同的表。
前任:
我一直认为varchar只会使用它需要的大小。
你知道这是否会提高性能,是否值得额外的编码/逻辑?
我正在批量更新 SQL Server 数据库。我将所有numeric(38,0)列更改为int (是的,SQL Server 脚本是从 Oracle 脚本创建的)。使用 SMO 和 C# (我是一名软件工程师),我设法生成了非常好的脚本,就像SQL Server Management Studio那样。除了一个特定问题外,一切都非常好:
对于少数表格,当我调用ALTER TABLE [myTable] ALTER COLUMN [columnA] INT它时,它决定还将列从NOT NULL to NULL. 这当然是一个大问题,因为我需要为那些特定列上的大多数表重新生成主键。
显然,我有很多选择使用 SMO 来找出哪些列是主键,并在我更新数据类型之后或同时强制它们为 NOT NULL,但我真的很好奇是什么导致了这种情况。
最新版本的 Management Studio(即 SQL Server 2008 附带的版本)终于具有 Transact-SQL IntelliSense 功能。但是,开箱即用的它仅适用于 SQL Server 2008 实例。
有什么解决方法吗?
[我不久前在StackOverflow 上问过这个问题,不幸的是没有人知道这样的技巧。也许我会在这里遇到这个问题。]
mysql ×3
oracle ×3
sql-server ×3
sqlplus ×2
eav ×1
intellisense ×1
optimization ×1
parallelism ×1
performance ×1
permissions ×1
plsql ×1
postgresql ×1
query ×1
rdbms ×1
role ×1
xml ×1