小编qwe*_*rty的帖子

重复键的Mysql group_concat和1个查询中多列重复的计数(查询优化)

这个问题是关于查询优化,以避免通过PHP多次调用数据库.

所以这是场景,我有两个表,其中包含您可以将其称为参考表的信息,另一个是数据表,字段key1并且key2在两个表中都是通用的,基于这些字段,我们可以加入它们.

我不知道查询是否可以比我现在正在做的更简单,我想要实现的如下:

我希望找到key1,key2,info1,info2main_info 表不同的,每当串行值小于10并且key1,key2两个表匹配时,然后将它们info1,info2分组,而分组计数key1,key2重复的info1,info2字段和group_concat那些键的重复

表的内容 main_info

MariaDB [demos]> select * from main_info;
+------+------+-------+-------+----------+
| key1 | key2 | info1 | info2 | date     |
+------+------+-------+-------+----------+
|    1 |    1 |    15 |    90 | 20120501 |
|    1 |    2 |    14 |    92 | 20120601 |
|    1 |    3 |    15 |    82 | 20120801 |
|    1 |    4 …
Run Code Online (Sandbox Code Playgroud)

mysql sql join mariadb

5
推荐指数
1
解决办法
810
查看次数

(PostgreSQL) 9.3.11 中的 Case 语句 COUNT for THEN

首先,这是一个课程作业问题,所以我不是在寻找完整的答案,只是一个提示:)

我有一个“君主”数据库,用于存储姓名、房屋(?)、登基、加冕(?),用于跟踪君主(包括首相)。宫位和加冕礼仅适用于君主,如果君主是首相,则返回 null。它看起来如下:

桌子

我需要编写一个返回scheme(house,seventeenth,eighteenth,nineteenth,twentieth)的psql查询,列出17、18、19和20世纪每个王室继承王位的君主数量,并且有添加什么内容作为我的 THEN 查询的问题。

编辑: 谢谢您的建议!我现在对我的查询做了一些更改:

 SELECT  house,
         TO_CHAR(accession, 'YYYY' ) AS accession_year,
         COUNT(CASE WHEN accession_year BETWEEN 1601 AND 1700 THEN name END) AS seventeenth,
         COUNT(CASE WHEN accession_year BETWEEN 1701 AND 1800 THEN name END) AS eighteenth,
         COUNT(CASE WHEN accession_year BETWEEN 1801 AND 1900 THEN name END) AS nineteenth,
         COUNT(CASE WHEN accession_year BETWEEN 1901 AND 2000 THEN name END) AS twentieth,
  FROM monarch
  WHERE house IS NOT NULL
  GROUP BY house
  ;
Run Code Online (Sandbox Code Playgroud)

现在 psql 告诉我 accession_year 不存在。我不想在 CASE …

sql postgresql

2
推荐指数
1
解决办法
2万
查看次数

立即学习 Prolog - 递归练习中的回溯问题

我在理解此示例中发生的事情时遇到了麻烦
立即学习 Prolog -第 3 章- 示例 3:后继

numeral(0).
numeral(succ(X)) :- numeral(X).
Run Code Online (Sandbox Code Playgroud)

当询问number(X)时,它首先给X赋值0,然后继续succ(0),以这种方式将succ(0)部分加1,直到它用完空间:

X = 0 ?     
X = succ(0) ? ;
X = succ(succ(0)) ? ;
X = succ(succ(succ(0))) ? ;
X = succ(succ(succ(succ(0)))) ? 
Run Code Online (Sandbox Code Playgroud)

我很难理解为什么它会增加 succ(0)?

我知道 prolog 会首先找到一个事实并匹配它,因此是第一个 0。然后它会回溯看看是否有任何其他解决方案,它会“看到”规则。在规则中,它将使用实例化的 X 到 0。我失败的地方是看它为什么不断增加 succ(0)。X 是否变为 succ(0),而不仅仅是 0?

我为愚蠢的大脑道歉。

prolog successor-arithmetics

2
推荐指数
1
解决办法
195
查看次数

嵌套循环的空间复杂度

当谈到算法的空间复杂度时,我感到很困惑。理论上,它对应于算法使用的额外堆栈空间,即输入以外的空间。然而,我很难指出这到底是什么意思。

例如,如果我有一个以下的强力算法来检查数组中是否没有重复项,这是否意味着它使用 O(1) 额外的存储空间,因为它使用 int j 和 int k?

 public static void distinctBruteForce(int[] myArray) {
    for (int j = 0; j < myArray.length; j++) {
        for (int k = j + 1; k < myArray.length; k++) {
            if (k != j && myArray[k] == myArray[j]) {
                return;
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

algorithm space-complexity

1
推荐指数
1
解决办法
7061
查看次数