标签: crosstab

为什么这个 crosstab() 查询返回重复的键?

我有下表称为sample_events

 Column | Type
--------+-----
 title  | text
 date   | date
Run Code Online (Sandbox Code Playgroud)

具有值:

 title |     date
-------+------------
 ev1   | 2017-01-01
 ev2   | 2017-01-03
 ev3   | 2017-01-02
 ev4   | 2017-12-10
 ev5   | 2017-12-11
 ev6   | 2017-07-28
Run Code Online (Sandbox Code Playgroud)

为了创建一个包含每个唯一年份每月事件数的数据透视表,我使用了以下形式的交叉表函数crosstab(text source_sql, text category_sql)

SELECT * FROM crosstab (
   'SELECT extract(year from date) AS year,
        extract(month from date) AS month, count(*)
    FROM sample_events
    GROUP BY year, month'
,
   'SELECT * FROM generate_series(1, 12)'
) AS (
    year int, jan int, feb int, …
Run Code Online (Sandbox Code Playgroud)

postgresql date crosstab

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

具有动态列名称和多个输入列的 PostgreSQL 交叉表

问题

我有一个 PostgreSQL 9.6 数据库,其中有一个根据 EAV 模型设计的表,其中包含不同类型的值。示例摘录如下所示:

 name |arrivalTime | boolValue | intValue | floatValue | stringValue
------+------------+-----------+----------+------------+------------
 a1   |  10:00:00  |   true    |          |            |
 c3   |  10:00:00  |           |   12     |            |
 d4   |  10:00:00  |           |          |            | hello
 e5   |  15:00:00  |           |          |    45.67   |
 c3   |  15:00:00  |           |   45     |            |
 b2   |  20:00:00  |           |          |    4.567   |
 a1   |  20:00:00  |   false   |          |            |
 d4   |  22:00:00  |           |          | …
Run Code Online (Sandbox Code Playgroud)

postgresql crosstab entity-attribute-value

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

Postgres Crosstab 将值分配给错误的列

我有一个名为 antest 的示例表,如下所示,用于测试交叉表函数。

create table antest(student text, subject text, result numeric);
insert into antest(student, subject, result) values
('peter','music',2.0), 
('peter','language',2.0),
('gabriel','history',8.0),
('john','history',9.0),
('john','maths',4.0),
('john','music',7.0);

student|subject|result
-------+-------+------
peter  |music  |2.0
peter  |lanuage|2.0
gabriel|history|8.0
john   |history|9.0
john   |maths  |4.0
john   |music  |7.0
Run Code Online (Sandbox Code Playgroud)

想要的结果:

student|music|language|history|maths
-------+-----+--------+-------+-----
peter  |2.0  |2.0     |       |
gabriel|     |        |8.0    |
john   |7.0  |        |9.0    |4.0
Run Code Online (Sandbox Code Playgroud)

我已经为此执行了以下查询:

select * 
from public.crosstab (
    'select student, subject, result from antest',
    'select distinct subject from antest'
) as final_result(student text, music numeric, maths …
Run Code Online (Sandbox Code Playgroud)

postgresql pivot crosstab

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

PostgreSQL 交叉表:月行和日列;错误 rowid 数据类型与返回 rowid 数据类型不匹配

我正在尝试创建一个交叉表,其中行=月,列=天(即1、2、3、4...31)。

    Month |   1  |   2  |  3  |  4  |  5  |  6  |  7  |  8  |  9  |  10  | 11  |  12 ...
    ------+------+------+-----+-----+-----+-----+-----+-----+-----+-----+------+------
     9    | 1000 | 1500 |     |     |     |     | 500 |     |     |     | 1500 | 2000
     8    | 1000 |      |     |     |     |     |     |     |     |     |      |
Run Code Online (Sandbox Code Playgroud)

我的查询如下:

SELECT * FROM crosstab(
    $$
    SELECT
      extract(month from created_at) AS themonth,
      extract(day from created_at) AS theday,
      COUNT(*)
    FROM public.users …
Run Code Online (Sandbox Code Playgroud)

postgresql crosstab

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

Pyspark dataframe:交叉表或其他方法将行标签作为新列

我有一个 pyspark 数据框,如下图所示:

在此输入图像描述

即我有四列:年份、单词、计数、频率。年份为2000年至2015年。

我想对(pyspark)数据框进行一些操作,以便我得到如下图所示格式的结果:

在此输入图像描述

新的数据框列应为:word、Frequency_2000、Frequency_2001、Frequency_2002、...、Frequency_2015。

每年每个单词的频率都来自以前的数据帧。

有什么建议我如何编写高效的代码吗?

另外,如果您能提供更多信息,请重命名标题。

crosstab dataframe pyspark

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

SELECT 中另一个列值的动态列别名

我想知道是否有一种方法,在 Postgres 上的 SELECT 语句中,将同一数据集中另一列的值作为列的别名。

鉴于此表:

ID 钥匙 价值
1 A d
2 A e
3 F

这将是结果:

ID A
1 d 无效的
2 e 无效的
3 无效的 F

对于每个实例,列的名称是根据 的值确定的,key而该值是列的值value,不知道该列将提供什么样的值key

这是一个可能的(不起作用)查询:

SELECT "id", "value" AS "t"."key" FROM testTable as t;
Run Code Online (Sandbox Code Playgroud)

sql postgresql select crosstab

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

如何使用列和行的总计创建Access交叉表查询?

我希望我的查询结果如下所示:

          Person1 Person2 Person3 Person4    Total 
Status1         2       4       7       3      16
Status2         0       1       0       3      4
Status3         0       0       0       0      0
Status4         0       1       3       0      4
Total           2       6       10      6      24
Run Code Online (Sandbox Code Playgroud)

我能够获得除底线以外的所有内容:

TRANSFORM Count(personName) 
SELECT status, Count(status) AS Total
FROM table1 
GROUP BY status
PIVOT personName
Run Code Online (Sandbox Code Playgroud)

我找到了一些关于使用UNION来解决最后一行的问题,但我似乎无法做到这一点.这似乎应该是一种常见的活动.

sql ms-access crosstab

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

Jasper报告了多页的宽交叉表

我有一个有很多列但只有几行的交叉表.当我生成报告时,交叉表重用一页中行下方的空白空间,并为相同的行呈现下一列.这样,几个页面在一个页面上垂直压缩: 在此输入图像描述

我希望从第20天到第27天(交叉表的第二部分)的列显示在不在同一页面上的新页面上,并将该空格留空.

jasper-reports crosstab ireport

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

TSQL - Unpivot多列

如何在"one"中取消多列的拆分?

现在我对每列都有一个univot,但这会产生很多空行.

请看截图. 在此输入图像描述

在顶部,您可以看到输入数据.目前我正在中间的桌子上用这段代码:

SELECT [ID], [RowNumber],  [Year], [Sales]  FROM (
        SELECT ID, RowNumber, [Sales 2013] as [2013], [Sales 2014] as [2014]
        FROM mytable) p     UNPIVOT (
        [Sales] FOR [Year] IN ([2013], [2014])  )AS unpvt ;
Run Code Online (Sandbox Code Playgroud)

但我认为,由于实际数据包含更多列以及更多年的处理时间,因此最好进入底层表结构.

这是一个小提琴样本数据.

希望你能告诉我一个到达那里的方法.谢谢.

t-sql sql-server pivot unpivot crosstab

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

postgresql交叉表简单的例子

我得到了一个基于键值的表,其中每个键值对分配给一个由id标识的实体:

|_id__|_key_______|_value_|
| 123 | FIRSTNAME | John  |
| 123 | LASTNAME  | Doe   |
Run Code Online (Sandbox Code Playgroud)

我想将它转换为这样的结构:

|_id__|_firstName_|_lastName_|
| 123 | John      | Doe      |
Run Code Online (Sandbox Code Playgroud)

我想可以使用postgres build in crosstabfunction来做到这一点.

你能告诉我怎么做并解释它为什么有效吗?

postgresql crosstab

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