簡體   English   中英

編寫一個查詢(最好在 sqlalchemy 中)以計算在 postgres 表中由另一列分組的列中唯一值的出現次數

[英]Write a query (preferably in sqlalchemy) to count number of occurrence of unique values in a column grouped by another column in a postgres table

我的項目使用 AWS Chalice 框架和 sqlalchemy。

這是該項目的示例表。

人表

我需要以兩種格式從表中獲取數據。 我需要兩個單獨的查詢,它們應該以不同的格式提供數據,因為它們都有單獨的 api。 請不要將查詢組合在一起以提供兩種格式的數據,因為數據集很大並且會出現性能問題,正如已經提到的,我需要單獨使用它們。

第一種格式:

我想計算按城市分組的不同工作的人數,如果工作字段為空/無,則應將其視為無工作。

{
   "Bangalore":{
      "Engineer": 2,
      "No Job": 2,
      "Paramedic": 1,
   },
   "Delhi":{
      "Architect": 2,
      "Doctor": 1,
   },
   "Mumbai":{
      "Doctor": 2,
      "Engineer": 1,
      "No Job": 1,
   }
}

第二種格式:

我想計算按城市分組的獨特職位和人員。

{
   "Bangalore":{
      "job_titles": 3,
      "persons": 5,
   },
   "Delhi":{
      "job_titles": 2,
      "persons": 3,
   },
   "Mumbai":{
      "job_titles": 3,
      "persons": 4,
   }
}

解釋:

  • 班加羅爾有 2 名工程師、1 名護理人員和 2 名沒有工作的人,所以有 3 個獨特的 job_titles 和 5 個人。
  • 德里有 2 名建築師和 1 名醫生,因此有 2 個獨特的職位和 3 人。
  • 孟買有 2 名醫生、1 名工程師和 1 名沒有工作的人,所以有 3 個獨特的 job_titles 和 4 個人。

目前,我通過Select * from table並迭代它以形成嵌套字典(在 Python 中)來實現這一點。 問題是這個處理需要很長時間。

我不確定這種格式的數據是否可以實現。 因此,任何可以輕松快速地轉換數據的查詢(wrt time)都會受到贊賞。

我已經在這個問題上停留了一個多月,因此感謝任何類型的幫助。 但請嘗試在 sqlalchemy 查詢中提供答案。

謝謝

這就像 SQL 的基礎知識 -計數分組依據 貌似是求職面試題。

select city, job, count(*) as count from person_jobs group by city, job;

在 Python 中:

cities_jobs = collections.defaultdict(dict)
for city, job, count in query_result:
  cities_jobs[city][job] = count

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM