我搜索了很多,但大多数解决方案都是串联选项,而不是我真正想要的。
我有一个表X(在 Postgres 数据库中):
anm_id anm_category anm_sales
1 a_dog 100
2 b_dog 50
3 c_dog 60
4 a_cat 70
5 b_cat 80
6 c_cat 40
Run Code Online (Sandbox Code Playgroud)
我想通过将 'a_dog'、'b_dog'、'c_dog' 分组为狗,将 'a_cat'、'b_cat'、'c_cat' 分组为猫来获得总销售额。
我无法更改表中的数据,因为它是外部数据库,我只能从中获取信息。
如何使用 SQL 查询来做到这一点?它不需要特定于 Postgres。
给定一个文本元素数组,我想计算出现的次数并将它们作为带有文本键和整数值的子对象返回。(PostgreSQL 9.4)
情况 1 - 没有参考集
SELECT ARRAY['3G','2G','2G','3G','3G','3G','3G','4G']
Run Code Online (Sandbox Code Playgroud)
应该转化为
SELECT '{"2G": 2, "3G": 5, "4G": 1}'::jsonb
Run Code Online (Sandbox Code Playgroud)
案例 2 - 使用参考集
给定一组可能的条目ARRAY['2G','3G','4G'],返回的 json 还应包含计数为零的元素。
SELECT ARRAY['3G','2G','2G','3G','3G','3G','3G']
Run Code Online (Sandbox Code Playgroud)
应该转变为
SELECT '{"2G": 2, "3G": 5, "4G": 0}'::jsonb
Run Code Online (Sandbox Code Playgroud)
我通过使用非常接近案例 1 和 2
-- case 1
SELECT json_object( array_agg(r.a)::text[],array_agg(r.num)::text[] )
FROM (
SELECT a, count(a) as num
FROM unnest( ARRAY['3G','2G','2G','3G','3G','3G','3G','4G'] ) a
GROUP BY a ORDER BY a
) r;
--case 2
SELECT json_object( array_agg(r.ref)::text[],array_agg(r.num)::text[] )
FROM (
SELECT ref, count(a) as num
FROM …Run Code Online (Sandbox Code Playgroud) 我创建了一个数据帧并分组和聚合时间戳,为每个分组提供最小值和最大值,结果数据帧看起来像这个 DF 定义为病人 ID,时间戳我按病人 ID 对 DF 进行分组,然后我想获取最小值和最大值每个组的最大时间戳,我这样做了
bypatient_date = pd.DataFrame(byencounter.agg({'timestamp' : [np.min,np.max]})).reset_index())
patient_id timestamp
amin amax
0 19 3396-08-21 3396-08-25
1 99 2723-09-27 2727-03-17
2 3014 2580-12-02 2581-05-01
3 24581 3399-07-19 3401-04-13
Run Code Online (Sandbox Code Playgroud)
我正在尝试找出每个患者 ID 的最小值和最大值之间的差异,但在尝试访问时间戳 amin 和时间戳 amax 中的值时遇到问题有没有办法在不循环但使用内置 pandas 或 numpy 的情况下执行此操作
如何在对数(至少以二为底)编译时间(严格来说,以对数实例化数量)中定义聚合的数量?
我目前能做的就是在线性时间内实现期望的目标:
#include <type_traits>
#include <utility>
struct filler { template< typename type > operator type (); };
template< typename A, typename index_sequence = std::index_sequence<>, typename = void >
struct aggregate_arity
: index_sequence
{
};
template< typename A, std::size_t ...indices >
struct aggregate_arity< A, std::index_sequence< indices... >, std::__void_t< decltype(A{(indices, std::declval< filler >())..., std::declval< filler >()}) > >
: aggregate_arity< A, std::index_sequence< indices..., sizeof...(indices) > >
{
};
struct A0 {};
struct A1 { double x; };
struct A2 { int i; …Run Code Online (Sandbox Code Playgroud) 我有一个名为“myindex”的 ElasticSearch 索引,我将三种不同映射类型(人员、事件和供应商)的文档加载到其中...
curl -XPOST localhost:9200/myindex/person/_bulk --data-binary @../JSON_DATA/persons.json
curl -XPOST localhost:9200/myindex/event/_bulk --data-binary @../JSON_DATA/events.json
curl -XPOST localhost:9200/myindex/vendor/_bulk --data-binary @../JSON_DATA/vendors.json
Run Code Online (Sandbox Code Playgroud)
使用以下命令可以看到索引创建成功:
curl 'localhost:9200/_cat/indices?v'
Run Code Online (Sandbox Code Playgroud)
我可以使用以下命令成功列出所有映射类型:
curl -s -XGET 'http://localhost:9200/myindex/_mapping/?pretty'
Run Code Online (Sandbox Code Playgroud)
我的问题 - A 部分:如何获取显式命名索引(“myindex”)中每种映射类型的文档聚合/总数?换句话说,我想知道每种映射类型的文档数量。
注意:我尝试过curl -s -XGET 'http://localhost:9200/myindex/_count/?pretty',但它只返回所有映射类型的总计数,而不是每种映射类型的总计数。换句话说,它并没有细分县城海滩测绘类型。
我的问题 - B 部分:鉴于能够获取每种映射类型的文档聚合/总数,如何获取存储在显式命名索引(“myindex”)中的任何一种特定映射类型的聚合计数?换句话说,我想知道索引“myindex”下一种显式命名的映射类型(例如“事件”)的文档数量。
我是弹性搜索的新手。我试图获取一组文档的总词频计数,但我似乎无法在elasticsearch 中计算出来。我知道有一个使用聚合的文档计数功能。通过术语向量,我可以找到文档中术语的频率,但是如何找到一组文档中术语的总频率呢?
单个文档的术语向量:
GET /test/product/3/_termvector
Run Code Online (Sandbox Code Playgroud)
汇总文档数:
GET /test/product/_search?pretty=true
{
"size" : 0,
"query" : {
"match_all" : {}
},
"aggs" : {
"phrases" : {
"terms" : {
"field" : "title",
"size" : 10000
}
}
}
}
Run Code Online (Sandbox Code Playgroud) 我有一个data.frame看起来像这样的(但是有更多的列和行):
Gene Cell1 Cell2 Cell3
1 A 2 7 8
2 A 5 2 9
3 B 2 7 8
4 C 1 4 3
Run Code Online (Sandbox Code Playgroud)
我想对 中具有相同值的行进行求和Gene,以获得如下结果:
Gene Cell1 Cell2 Cell3
1 A 7 9 17
2 B 2 7 8
3 C 1 4 3
Run Code Online (Sandbox Code Playgroud)
根据之前问题的答案,我尝试使用aggregate但我无法理解如何获得上述结果。这是我尝试过的:
aggregate(df[,-1], list(df[,1]), FUN = sum)
Run Code Online (Sandbox Code Playgroud)
有人知道我做错了什么吗?
我有一个 pandas 数据框定义如下:
import pandas as pd
headers = ['Group', 'Element', 'Case', 'Score', 'Evaluation']
data = [
['A', 1, 'x', 1.40, 0.59],
['A', 1, 'y', 9.19, 0.52],
['A', 2, 'x', 8.82, 0.80],
['A', 2, 'y', 7.18, 0.41],
['B', 1, 'x', 1.38, 0.22],
['B', 1, 'y', 7.14, 0.10],
['B', 2, 'x', 9.12, 0.28],
['B', 2, 'y', 4.11, 0.97],
]
df = pd.DataFrame(data, columns=headers)
Run Code Online (Sandbox Code Playgroud)
在控制台输出中看起来像这样:
Group Element Case Score Evaluation
0 A 1 x 1.40 0.59
1 A 1 y 9.19 …Run Code Online (Sandbox Code Playgroud) 我有表“event_statistics”,其定义如下:
\n\nCREATE TABLE public.event_statistics (\n id int4 NOT NULL DEFAULT nextval(\'event_statistics_id_seq\'::regclass),\n client_id int4 NULL,\n session_id int4 NULL,\n action_name text NULL,\n value text NULL,\n product_id int8 NULL,\n product_options jsonb NOT NULL DEFAULT \'{}\'::jsonb,\n url text NULL,\n url_options jsonb NOT NULL DEFAULT \'{}\'::jsonb,\n visit int4 NULL DEFAULT 0,\n date_update timestamptz NULL,\nCONSTRAINT event_statistics_pkey PRIMARY KEY (id),\nCONSTRAINT event_statistics_client_id_session_id_sessions_client_id_id_for \nFOREIGN KEY \n(client_id,session_id) REFERENCES <?>() ON DELETE CASCADE ON UPDATE CASCADE\n)\nWITH (\n OIDS=FALSE\n) ;\nCREATE INDEX regdate ON public.event_statistics (date_update \ntimestamptz_ops) ;\nRun Code Online (Sandbox Code Playgroud)\n\n和表“客户”: …
考虑以下聚合:
\n\nlet getUsersWithNoPersonsPromise = () => {\n\n let pipeline = [\n {\n $lookup: {\n from: "persons",\n localField: "id",\n foreignField: "person_id",\n as: "persons_users"\n }\n },\n {\n $match: {\n "persons_users:0": {\n $exists: false\n }\n }\n }\n ];\n\n\n return User.aggregate(pipeline).exec();\n}\nRun Code Online (Sandbox Code Playgroud)\n\n如何将$match结果转换为 UserModel 类型?I\xc2\xb4m 在其上获取普通的 javascript 对象,并且我希望收到 mongoose User 类型对象。