簡體   English   中英

SQL select 列 group by 其中值的比率為 1

[英]SQL select column group by where the ratio of a value is 1

我正在使用 PSQL。

我有一個有幾列的表,一列是可以有 4 個不同值的event - X1、X2、Y1、Y2。 我有另一列是服務的名稱,我想使用此列進行分組。

我的目標是進行一個帶有事件的查詢並驗證對於特定服務名稱,如果不顯示帶有“錯誤”的新列,我有 count(X1) == count(X2)

這甚至可能嗎? 我對 SQL 有點陌生,不知道怎么寫。

到目前為止,我嘗試過這樣的事情

select 
    service_name, event, count(service_name) 
from 
    service_table st 
group by 
    (service_name, event); 

我正在獲取特定 service_name 的每個事件的計數,但我想驗證每個 service_name 的事件 1 的計數 == 事件 2 的計數。

我想補充一點,每個 service_name 只能選擇 2 個不同的事件。

您可能不需要子查詢/CTE,但它會起作用(並使邏輯更容易遵循):

WITH event_counts_by_service AS (SELECT
service_name
, COUNT(CASE WHEN event='X1' THEN 1 END) AS count_x1
, COUNT(CASE WHEN event='X2' THEN 1 END) AS count_x2
FROM service_table
GROUP BY service_name)
SELECT service_name
, CASE WHEN count_x1=count_x2 THEN NULL ELSE 'Error' END AS are_counts_equal
FROM event_counts_by_service

暫無
暫無

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

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